如何访问preferenceFragment通过ID? [英] How do I access PreferenceFragment by id?
问题描述
我有一个蜂窝式的preferences。我定义了头:
I have a Honeycomb style preferences. I define the headers:
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header android:id="@+id/pref_general" android:fragment="MyPreferencesFragment" android:title="@string/pref_general_title">
<extra android:name="resource" android:value="pref_general" />
</header>
<header android:id="@+id/pref_sharing" android:fragment="MyPreferencesFragment" android:title="@string/pref_sharing_title">
<extra android:name="resource" android:value="pref_sharing" />
</header>
</preference-headers>
然后,我加载它们在preferenceActivity:
Then I load them in PreferenceActivity:
public void onBuildHeaders(List<Header> target)
{
loadHeadersFromResource(R.xml.preference_headers, target);
}
如何通过它在开始preferenceFragment ID,然后在地址确切的片段?我怎样才能获得相应的片段,所以我可以使一个列表项/禁用呢?
How can I then address exact Fragment by its ID in startPreferenceFragment? How can I access a list item corresponding to that Fragment so I can enable/disable it?
推荐答案
我已经找到了解决方案。有没有办法直接访问的片段,但可以通过 ListAdapter
中找到。在您的 preferenceActivity 你可以写
I have found the solution. There is no way to access fragment directly, but it can be found via ListAdapter
. In your PreferenceActivity you can write:
int fragmentId = R.id.pref_sharing;
for (int i = 0; i < getListAdapter().getCount(); i++)
{
Header header = (Header) getListAdapter().getItem(i);
if (fragmentId == header.id)
{
// You can access a fragment name (class)
String fragment = header.fragment;
// You can access fragment arguments
Bundle args = header.fragmentArguments;
}
}
我没有找到一个方法来禁用一个标题列表项,但我创建了一个解决办法在此基础上code。
I didn't find a way to disable a header list item but I created a workaround based on this code.
这篇关于如何访问preferenceFragment通过ID?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!