2015-06-21 72 views
1

我有一个通过头添加PreferenceFragment一个PreferenceActivity:findFragmentById或findFragmentByTag为PreferenceFragment

public class SettingsActivity extends PreferenceActivity { 
... 

@Override 
public void onBuildHeaders(List<Header> target) { 
    loadHeadersFromResource(R.xml.pref_headers, target); 
} 
... 
} 

现在我需要调用PreferenceFragment从PreferenceActivity的方法,但由于使用了头添加PreferenceFragment我我不能使用Fragment fragment = getFragmentManager.findFragmentByTag("tagfragment");不知道分配给片段的TAG或ID。

我该如何解决?

[解决]

使用这种方法解决:https://stackoverflow.com/a/18005721/570488

+0

为什么不使用PreferenceFragment + iterface来处理通信?我最近做到了。 – Xplouder

+0

我通常使用接口来从片段到活动进行交流。但我需要从活动交流到片段。 – Simone

+0

我看到...在这种情况下尝试此解决方案:http://stackoverflow.com/questions/8348078/how-do-i-access-preferencefragment-by-id – Xplouder

回答

-1

确保当你调用这个PreferenceActivity已经加载:

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

MyPreferenceFragment应更换为自己的PreferenceFragment类名。

+0

同样的问题:frag为null。为了更好地理解我试图用PreferenceFragment从PreferenceFragment使用本帖的第二种方法:http://stackoverflow.com/a/14131852/570488 因此,从PreferenceActivity我需要调用: FragmentManager fragmentManager = getSupportFragmentManager(); Fragment fragment = fragmentManager.findFragmentByTag(“YourTag”); ((片段!=空) {((MyFragmentWithIabHelper)片段).onActivityResult(requestCode,resultCode,data); } 但我不知道PreferenceFragment的id或标记... – Simone

+0

您是否尝试android.R.id.content正如我在回答中所述? – Xplouder

+0

该ID指向活动的根视图,在你的情况下应该是PreferenceFragment,对吧?所以,而不是findFragmentByTag使用findFragmentById – Xplouder

相关问题