Android 即使不在布局中,片段也不为空
我正在开发一个双窗格的应用程序,它的外观会根据屏幕方向而变化。在纵向模式下,应用程序仅显示ListFragment。在横向视图中,我有一个ListFragment和一个只包含TextView的DescriptionFragment 在纵向模式下,当我单击ListView中的某个项目时,应用程序应在另一个包含DescriptionFragment的活动中向我显示描述。 另一方面,在横向模式下,描述应该出现在同一布局的DescriptionFragment中 它在纵向模式下运行良好,甚至当我切换到横向模式时。当我从横向返回到纵向时,问题出现了 在下面的代码中,fragment1是布局中DescriptionFragment的id。在纵向模式下,f为空,我们转到另一个活动。当处于横向时,f不为空,它工作。但当我们返回到纵向模式时,f不是null,但TextView是null,应用程序崩溃 当我们回到肖像,为什么它能够找到碎片,即使它不在布局中Android 即使不在布局中,片段也不为空,android,Android,我正在开发一个双窗格的应用程序,它的外观会根据屏幕方向而变化。在纵向模式下,应用程序仅显示ListFragment。在横向视图中,我有一个ListFragment和一个只包含TextView的DescriptionFragment 在纵向模式下,当我单击ListView中的某个项目时,应用程序应在另一个包含DescriptionFragment的活动中向我显示描述。 另一方面,在横向模式下,描述应该出现在同一布局的DescriptionFragment中 它在纵向模式下运行良好,甚至当我切换到横
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_list);
ListView lv = (ListView) findViewById(android.R.id.list);
final FragmentManager fm = getSupportFragmentManager();
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Fragment f = fm.findFragmentById(R.id.fragment1);
if (f == null) {
Intent p = new Intent(MyListActivity.this, DescriptionActivity.class);
p.putExtra("pos", i);
startActivity(p);
} else {
TextView tv = (TextView) findViewById(R.id.description);
if (tv != null)
tv.setText(citiesdata[i]);
}
}
});
}
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u my\u列表);
ListView lv=(ListView)findViewById(android.R.id.list);
final FragmentManager fm=getSupportFragmentManager();
lv.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
片段f=fm.findFragmentById(R.id.fragment1);
如果(f==null){
Intent p=新的Intent(MyListActivity.this,DescriptionActivity.class);
p、 putExtra(“pos”,i);
星形触觉(p);
}否则{
TextView tv=(TextView)findViewById(R.id.description);
如果(电视!=null)
tv.setText(citiesdata[i]);
}
}
});
}
}