在我的布局的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。"
答案 0 :(得分:1)
在两种情况下,通过在片段类中说layout = (LinearLayout) getView()
或在活动中说layout = (LinearLayout) fragment.getView()
来解决问题。这并没有回答为什么我所做的事情没有工作(这可能会有所帮助),但这解决了这个问题。