Я осмотрел и нашел пару вопросов с подобной темой, но ничего не помогло в моем случае. Я пытаюсь получить доступ к существующему активному фрагменту, используя getSupportFragmentManager(). FindFragmentByTag (TAG), но он всегда возвращает null. Ответы по подобным вопросам предполагали, что для фиксации требуется некоторое время, поэтому вызов findFragmentByTag возвращает null, если он вызван слишком рано. Я пробовал две вещи:Андроидные фрагменты - 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);
}
}
Что я здесь делаю неправильно? Приветствия, Max
Вы уверены, что сохраненный объектInstanceState имеет значение null? – njzk2
ft.addToBackStack (F_SETTINGS); <--- это не помещает ваши фрагменты. – bofredo