我環顧四周,發現了一些類似主題的問題,但沒有任何對我有幫助的問題。 我試圖使用getSupportFragmentManager()。findFragmentByTag(TAG)訪問現有的活動片段,但它始終返回null。類似問題的回覆表明,執行提交需要一段時間,因此如果調用過早,調用findFragmentByTag將返回null。我已經試過兩件事情:Android碎片 - findFragmentByTag總是返回null
- 添加getSupportFragmentManager()executePendingTransactions()後
立即提交,但仍得到空。 - 添加了一個按鈕...在創建活動後按此按鈕, 已註冊的片段和顯示的視圖應該使 系統有足夠的時間提交。但我仍然得到null。
這裏是我的活動:
public class MainActivity extends ActionBarActivity {
private static final String F_SETTINGS = "f_settings";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
debug();
}
});
if (savedInstanceState == null) {
FSettings newFragment = new FSettings();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.container, newFragment);
ft.addToBackStack(F_SETTINGS);
ft.commit();
// getSupportFragmentManager().executePendingTransactions();
//// Activating this did not make any difference...
}
debug();
}
private void debug() {
String txt = "null";
Fragment frag = getSupportFragmentManager().findFragmentByTag(F_SETTINGS);
if (frag != null) {
txt = frag.toString();
}
Log.i("Testing", txt);
}
}
什麼我錯在這裏做什麼? 乾杯, 最大
你確定savedInstanceState爲空嗎? – njzk2
ft.addToBackStack(F_SETTINGS); <---這不會標記您的片段。 – bofredo