2015-06-21 82 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