即使不在布局中,片段也不会为空

时间:2017-04-07 13:51:32

标签: android

我正在开发一个两个窗格的应用程序,其外观根据屏幕方向而变化。在纵向模式下,应用程序仅显示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]);
                }
            }
        });
    }
}

0 个答案:

没有答案