4

当为 a 定义Fragment并在内部setContentView()方法中使用的布局时,它与Activity. 那么为什么我们需要Activity参考来访问它。

所以我想ListViewFragment. 比我必须在Activity布局或内部Fragment布局中创建它。

嘿,尼尔,我有一个问题,因为每次我都犯了错误,因为,我正在执行这个

TextView txt = ( TextView ) getActivity().findViewById(R.id.txt);
txt.setText("nayak nahi , khalnayak hun mein");

在里面oncreateView()所以它正在制造问题但是当我在里面实现 它时onActivityCreated(),它正在工作,所以你能告诉我为什么会这样。

4

3 回答 3

2

如果你想通过 getActivity() 找到视图,你应该在调用 onCreateView 之后这样做,因为在调用 onCreateView 之前,片段的视图是空的。所以你可以这样做:

@Override
public void onResume() {
    super.onResume();
    TextView txt = ( TextView ) getActivity().findViewById(R.id.txt);
    txt.setText("nayak nahi , khalnayak hun mein");
}
于 2016-01-12T10:16:40.540 回答
0

可以在布局ListView中为您的Fragment. 在您的片段中尝试这样的事情来定义替代布局

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
         Bundle savedInstanceState) {
    _baseView = inflater.inflate(R.layout.yourlayout, null); //where base view is your upper most parent in your layout
    return _baseView;
}

然后在你的onActivityCreated你可以使用_baseView.findViewById('yourListView')来设置你的ListView. 我不知道这是否是最佳做法,但它对我来说非常有效。

于 2013-03-19T05:02:03.927 回答
0

在 Fragment 中,您应该使用它的 View 但 getActivity:

public View onCreateView(…){
View rootView = inflater.inflate(R.layout.listview_xml_file, container, false);
ListView ListNewsBelarus = (ListView) rootView.findViewById(R.id.listViewId);
return rootView;
}
于 2013-07-16T19:26:40.077 回答