Android FragmentManager.findFragmentByTag()的奇怪行为
好的,今天我注意到findFragmentByTag()有一个奇怪的行为:如果我旋转屏幕一次,片段返回正确,但是在第二次旋转时,我总是得到null。我做错什么了吗?有办法解决这个问题吗Android FragmentManager.findFragmentByTag()的奇怪行为,android,android-fragments,Android,Android Fragments,好的,今天我注意到findFragmentByTag()有一个奇怪的行为:如果我旋转屏幕一次,片段返回正确,但是在第二次旋转时,我总是得到null。我做错什么了吗?有办法解决这个问题吗 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.l
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fm = getSupportFragmentManager();
Fragment f = fm.findFragmentByTag("frag");
if (f == null){
Log.e("Fragment","null");
f = new Fragment();
}
f.setRetainInstance(true);
fm.beginTransaction().remove(f).add(f, "frag").commit();
}
尝试调用
setRetainInstance(true)代码>在片段的onCreate()
中,并将上面的代码更改为:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstance == null){
FragmentManager fm = getSupportFragmentManager();
Fragment f = new Fragment();
fm.beginTransaction().add(f, "frag").commit();
}
}
同时设置id以在布局视图组中显示它尝试调用setRetainInstance(true)代码>在片段的onCreate()
中,并将上面的代码更改为:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstance == null){
FragmentManager fm = getSupportFragmentManager();
Fragment f = new Fragment();
fm.beginTransaction().add(f, "frag").commit();
}
}
同时设置id以在布局视图组中显示它尝试调用setRetainInstance(true)代码>在片段的onCreate()
中,并将上面的代码更改为:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstance == null){
FragmentManager fm = getSupportFragmentManager();
Fragment f = new Fragment();
fm.beginTransaction().add(f, "frag").commit();
}
}
同时设置id以在布局视图组中显示它尝试调用setRetainInstance(true)代码>在片段的onCreate()
中,并将上面的代码更改为:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstance == null){
FragmentManager fm = getSupportFragmentManager();
Fragment f = new Fragment();
fm.beginTransaction().add(f, "frag").commit();
}
}
同时设置id以在布局视图组中显示它谢谢,您的回答让我找到了解决方案,因为我需要调用片段上的一些方法,我需要通过findFragmentByTag“检索”它。看起来,如果你删除并读取一个片段,它的标签将不会因为某种原因而被设置。很高兴我能帮上忙。。。别忘了投票并接受答案谢谢,您的回答让我找到了解决方案,因为我需要调用片段上的一些方法,我需要通过findFragmentByTag“检索”它。看起来,如果你删除并读取一个片段,它的标签将不会因为某种原因而被设置。很高兴我能帮上忙。。。别忘了投票并接受答案谢谢,您的回答让我找到了解决方案,因为我需要调用片段上的一些方法,我需要通过findFragmentByTag“检索”它。看起来,如果你删除并读取一个片段,它的标签将不会因为某种原因而被设置。很高兴我能帮上忙。。。别忘了投票并接受答案谢谢,您的回答让我找到了解决方案,因为我需要调用片段上的一些方法,我需要通过findFragmentByTag“检索”它。看起来,如果你删除并读取一个片段,它的标签将不会因为某种原因而被设置。很高兴我能帮上忙。。。别忘了投票并接受答案