【发布时间】:2016-07-04 19:04:24
【问题描述】:
在我的布局的 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 的文本设置为“空”。这怎么可能,因为我试图以完全相同的方式获取对布局和 textview 的引用?
活动类中的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 的引用。这是 Activity 的 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”。
【问题讨论】:
-
请发布您的
Activity.onCreate。如果正在您的活动中创建视图,我建议您将代码移动到您的活动中 -
您正在尝试从您的
Activity获取Fragment的LinearLayout?我说对了吗? -
你引用的是
getActivity().findViewById(R.id.text)吗?我还尝试在onActivityCreated()中使用getView().findViewById(...)来浏览片段,但这也不起作用