Tôi có một PreferenceActivity với một số mảnh vỡ:Làm cách nào để gọi một PreferenceFragment cụ thể từ một PreferenceActivity?
R.xml.preferences: (rút ngắn để có thể đọc tốt hơn):
<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header android:fragment="fragments.Fragment1" android:id="@+id/fragment1" [...] />
<header android:fragment="fragments.Fragment2" android:id="@+id/fragment2" [...] />
[...]
</preference-headers>
SettingsActivity:
public class SettingsActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.preferences, target);
}
}
này sẽ hiển thị một mục danh sách với fragments.Fragment1
, fragments.Fragment2
... nếu SettingsActivity
được bắt đầu.
Nhưng bây giờ tôi muốn vượt qua một Bundle như vậy mà một PreferenceFragment cụ thể được mở ra khi bắt đầu hoạt động:
vì vậy tôi thêm này để SettingsActivity:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null && savedInstanceState.getBoolean("shortcut")) {
// directly jump to fragments.Fragment1
}
}
Tôi cố gắng để tải các đoạn qua số getFragmentManager().findFragmentById(R.id.fragment1)
, nhưng điều này trả về null
. Nhưng ngay cả khi tôi đã có trường hợp chính xác, tôi sẽ không biết làm thế nào để gọi nó. Ngoài ra, gọi loadHeadersFromResource(R.xml.preferences_fragment1, target);
không hoạt động - Điều này sẽ ném một tài liệu XML RuntimeException "phải bắt đầu bằng thẻ; foundPreferenceScreen tại tệp nhị phân XML". Tôi không còn ý tưởng và tìm kiếm trên SO và Google không trả lại bất kỳ kết quả nào có liên quan.
Vì vậy, câu hỏi của tôi là: Có thể tải trực tiếp một PreferenceFragment (ví dụ: fragments.Fragment1) từ phương thức onCreate của Activitiy không? Nếu vậy, làm thế nào?
Chính xác những gì tôi đang tìm kiếm cho. Cảm ơn! –
Thật tuyệt khi họ ủng hộ điều này. Cám ơn vì đã chia sẻ. Nó cũng làm việc tốt cho tôi. – lepert