0

我正在编写一个关于片段的程序,其中一个片段处于纵向模式,两个片段处于横向模式。mainfrag1 包含一个纵向片段和两个横向片段。当我将活动从纵向切换到横向并按照下面的代码时,fr1 和 fr2 是片段 1 和片段 2 的 ID

protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainfrag1);
        FragmentManager fm=getFragmentManager();
        try
        {
        f2=(Fragment)fm.findFragmentById(R.id.fr2);

        }catch(Exception ep){}
        if(f2!=null)
        {
            Toast.makeText(this, "it is both", Toast.LENGTH_SHORT).show();
             et=(EditText)f2.getView().findViewById(R.id.editText1);
        }
        else
            Toast.makeText(this, "it is only one", Toast.LENGTH_SHORT).show();
    }

当我们从横向切换回纵向时,检查 f2!=null 返回 true,但 f2.getView 返回 null。为什么 f2 不在屏幕上时不给出 null 以及如何更新代码以使其正常运行,请清楚这一点。谢谢

4

1 回答 1

0

保留的片段在创建时可能无法查看。Fragment 有一个类似于 Activity 生命周期的自己的生命周期,因此它将被销毁,然后在适当的时间再次创建。

但是,如果您尝试从 Fragment 获取特定视图,则您遇到了设计错误,您应该让 Fragment 自己处理它的操作。

于 2013-09-19T14:28:37.503 回答