Android PreferenceFragment的findFragmentById或findFragmentByTag

Android PreferenceFragment的findFragmentById或findFragmentByTag,android,preferenceactivity,preferencefragment,Android,Preferenceactivity,Preferencefragment,我有一个PreferenceActivity,它通过标题添加PreferenceFragment: public class SettingsActivity extends PreferenceActivity { ... @Override public void onBuildHeaders(List<Header> target) { loadHeadersFromResource(R.xml.pref_headers, target); } ... } 公共类设

我有一个PreferenceActivity,它通过标题添加PreferenceFragment:

public class SettingsActivity extends PreferenceActivity {
...

@Override
public void onBuildHeaders(List<Header> target) {
    loadHeadersFromResource(R.xml.pref_headers, target);
}
...
}
公共类设置活动扩展了PreferenceActivity{
...
@凌驾
public void onBuildHeaders(列表目标){
loadHeadersFromResource(R.xml.pref_头,目标);
}
...
}
现在我需要从PreferenceActivity调用PreferenceFragment的方法,但我不能使用
Fragment Fragment=getFragmentManager.findFragmentByTag(“tagfragment”)因为使用头添加PreferenceFragment我不知道分配给片段的标记或ID

我怎样才能解决这个问题

[已解决]


使用此方法解决:

调用此方法时,请确保已加载PreferenceActivity:

MyPreferenceFragment frag = (MyPreferenceFragment) getFragmentManager().findFragmentById(android.R.id.content);

MyPreferenceFragment应替换为您自己的PreferenceFragment类名。

为什么不使用PreferenceFragment+iterface来处理通信?我最近就这么做了。我通常使用接口来从片段到活动进行通信。但我需要从一个活动到另一个片段进行交流。我明白了。。。在这种情况下,试试这个解决方案:嗯……不太清楚:我应该在我的首选活动的哪一部分编写代码??什么是R.id.pref_共享???我的碎片的id就是我要找的。最后,我不需要片段的字符串名(我只需要额外的\u SHOW\u fragment就可以得到)而是片段对象。该id可能是片段容器id。无论如何,在加载整个preferenceActivity后尝试运行此代码并检查日志。尝试找出具有该属性的preferenceFragment。同样的问题:frag为null。为了更好地理解,我正在尝试使用本文的第二种方法从PreferenceFragment使用应用内计费:因此,从PreferenceActivity我需要调用:FragmentManager FragmentManager=getSupportFragmentManager();Fragment Fragment=fragmentManager.findFragmentByTag(“YourTag”);如果(fragment!=null){((MyFragmentWithIbaHelper)fragment).onActivityResult(requestCode,resultCode,data);}但我不知道PreferenceFragment的id或标记…您是否如我在回答中所说尝试了android.R.id.content?该id指向活动的根视图,在您的情况下应该是PreferenceFragment,正当因此,我使用findFragmentById(android.R.id.content)代替findFragmentByTag使用findFragmentById;正如您所发布的,但它返回null.奇怪,因为它返回了正确的PreferenceFragment。