我正在开发一个两个窗格的应用程序,其外观根据屏幕方向而变化。在纵向模式下,应用程序仅显示ListFragment。在横向中,我有一个ListFragment和一个只包含TextView的DescriptionFragment。
在纵向模式下,当我单击ListView中的某个项目时,应用程序应该在另一个包含DescriptionFragment的Activity中显示一个描述。 另一方面,在横向模式下,描述应以相同的布局显示在DescriptionFragment中。
它在纵向模式下工作正常,即使我切换到横向也是如此。当我从风景中回到肖像时会出现问题。
在以下代码中,fragment1是布局中DescriptionFragment的id。在纵向模式下,f为空,我们转到另一个活动。当在横向f中不是null并且它有效。但是当我们返回到纵向模式时,f不为null但TextView为null并且应用程序崩溃。
当我们回到肖像时,为什么它能够找到片段,即使它不在布局中?
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]);
}
}
});
}
}