如何访问preferenceFragment通过ID? [英] How do I access PreferenceFragment by id?

查看:225
本文介绍了如何访问preferenceFragment通过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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆