2015-06-01 12 views
6

này là khá nhiều trường hợp điển hình sử dụng Android.Android Định hướng thay đổi: Giao diện khác nhau, Cùng Những mảnh vỡ

Giả sử chúng tôi có 2 mảnh: FragmentA và FragmentB.

Trong chế độ phong cảnh, FragmentA và FragmentB ngồi cạnh nhau.

Trong chế độ chân dung, họ từng chiếm toàn bộ màn hình khi sử dụng.

(Xem hình ảnh này nhưng thay thế tablet-> cảnh quan và handset-> chân dung) Different Layout, Same Fragments on Orientation Change

Như đã giải thích ở đây (Supporting Single-Pane and Multi-Pane Layouts), có 2 cách để đạt được điều này:

1- Nhiều mảnh vỡ, một hoạt động: Sử dụng một hoạt động bất kể kích thước thiết bị, nhưng quyết định thời gian chạy kết hợp các đoạn trong bố cục (để tạo thiết kế nhiều ngăn) hay hoán đổi (để tạo thiết kế một cửa sổ).

2- Nhiều mảnh vỡ, nhiều hoạt động: Trên máy tính bảng, đặt nhiều mảnh trong một hoạt động; trên thiết bị cầm tay, sử dụng các hoạt động riêng biệt để lưu trữ từng đoạn. Ví dụ: khi thiết kế máy tính bảng sử dụng hai đoạn trong một hoạt động, hãy sử dụng cùng một hoạt động cho điện thoại di động, nhưng cung cấp bố cục thay thế chỉ bao gồm đoạn đầu tiên. Khi chạy trên thiết bị cầm tay và bạn cần chuyển đổi các đoạn (chẳng hạn như khi người dùng chọn một mục), hãy bắt đầu một hoạt động khác lưu trữ đoạn thứ hai.

Điều này làm cho rất nhiều ý nghĩa về mặt lý thuyết, nhưng tôi đánh một số rào cản trong việc cố gắng để thực sự thực hiện một trong những cách tiếp cận theo một cách mà khôi phục trạng thái của Những mảnh vỡ khi thay đổi phương hướng và trên nút quay lại nhấn.

Tôi đã thử cách tiếp cận đầu tiên và nhận được khá xa, nhưng thấy nó lộn xộn vì nó yêu cầu quản lý tất cả các giao dịch phân đoạn theo cách thủ công, đặc biệt vì vùng chứa Fragment không thể thay đổi dễ dàng. Nó cũng là một nỗi đau để quyết định những gì để làm trên lưng ép vì giao dịch cuối cùng trên backstack có thể thuộc về định hướng khác.

Bây giờ tôi đang cố gắng lựa chọn thứ hai. Nó có vẻ sạch hơn cho đến nay nhưng các mảnh vỡ được tái tạo từ đầu trên mọi thay đổi định hướng (vì mỗi định hướng sử dụng một hoạt động khác nhau). Tôi muốn có cách khôi phục trạng thái Phân đoạn từ Hoạt động/hướng khác.

bất cứ ai có thể giải thích như thế nào điều này có thể được thực hiện, hoặc chỉ cho tôi một hướng dẫn thích hợp hoặc ứng dụng mẫu?

+1

Nói chung, việc chuyển đổi từ một cửa sổ để tiếp cận khung duy nhất trên cùng một thiết bị hai không được khuyến cáo (mô hình tinh thần của những gì sẽ xảy ra khi đi từ hai cửa sổ để một khác nhau và có thể gây nhầm lẫn). Đó là một trong những lý do tại sao bạn không nhìn thấy mẫu này rất thường xuyên và thay vào đó, hãy xem các thay đổi bố cục tốt hơn, thích ứng với một cửa sổ đơn cho cảnh quan hoặc hai ngăn cho ảnh chân dung. – ianhanniballake

+0

Tôi không hiểu ý bạn là gì "Tôi muốn có cách khôi phục trạng thái Phân đoạn từ Hoạt động/hướng khác." Hoạt động nào khác đề cập đến? – Dinash

Trả lời

4
  • thêm cấu hình này trong MainActivity nơi Fragment là thay thế <activity android:name=".MainActivity" android:configChanges="orientation|screenSize|keyboard|keyboardHidden" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT"/></intent-filter> </activity
  • Bạn phải tạo bố trí cảnh quan mảnh cho FragmentAFragmentB enter image description here
  • nếu bạn cần phải thay đổi hành vi của cả hai mảnh bạn nên thay đổi trong onConfigurationChanged trường hợp đoạn.

@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { //write your stuff for landscape orientation }else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { //write your stuff for portrait orientation } }

Các vấn đề liên quan