布局时,为Fragment
定义并在setContentView()
方法中使用且与Activity
无关。
那么为什么我们需要Activity
参考来访问它。
所以我想在ListView
内创建一个Fragment
。我必须在Activity
布局或Fragment
布局内部创建它。
TextView txt = ( TextView ) getActivity().findViewById(R.id.txt);
txt.setText("nayak nahi , khalnayak hun mein");
在oncreateView()
内,所以它会产生问题,但是当我在里面实现这个时
onActivityCreated()
,它正在运作,所以请你告诉我为什么会这样。
答案 0 :(得分:2)
如果要通过getActivity()查找视图,则应在调用onCreateView后执行此操作,因为在调用onCreateView之前,fragment的视图为null。所以你可以这样做:
KeyAdapter instance = new MyKeyAdapter();
label.addKeyListener(instance);
......
......
if(reached()){
label.removeKeyListener(instance);
}
答案 1 :(得分: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
。我不知道这是不是最好的做法,但它对我来说非常适合。
答案 2 :(得分: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;
}