在片段中获取LinearLayout的引用

时间:2016-07-04 19:04:24

标签: android fragment

在我的布局的XML文件中,我添加了一个片段。 我的片段的布局是一个LinearLayout,它包含一个文本视图。

我希望在我的片段类中获得对LinearLayout对象的引用,但是尽管尝试了我能想到或在线查找的所有内容,但它总是为空。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    text = (TextView) getActivity().findViewById(R.id.text);
    layout = (LinearLayout) getActivity().findViewById(R.id.layout);

    if(layout == null){
        text.setText("null");
    }
}

此代码位于我的片段类中,导致TextView的文本设置为" null"因为布局是null。这怎么可能因为我试图以完全相同的方式获得对布局和textview的引用?

onCreate in activity class

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    manager = getFragmentManager();
    MyFragment = (MyFragment) manager.findFragmentById(R.id.fragment);

}

方法2

我尝试在我的活动中获得对LinearLayout的引用。以下是此次尝试的活动onCreate。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    manager = getFragmentManager();
    MyFragment = (MyFragment) manager.findFragmentById(R.id.fragment);

    LinearLayout ll = (LinearLayout) findViewById(R.id.layout);
    TextView tv = (TextView) findViewById(R.id.text);

    if(ll == null){
        tv.setText("null");
    }
}

这也将文本更改为" null。"

1 个答案:

答案 0 :(得分:1)

在两种情况下,通过在片段类中说layout = (LinearLayout) getView()或在活动中说layout = (LinearLayout) fragment.getView()来解决问题。这并没有回答为什么我所做的事情没有工作(这可能会有所帮助),但这解决了这个问题。