Android使用Fragment,不能得到Fragment内部控件,findViewById()结果是Null androidfragment 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这样就可以了。public class FragmentA extends Fragment { private View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_a, container, false); return view ; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); TextView textView1 = (TextView) getView().findViewById(R.id.textView1); textView1.setText("改变"); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); TextView textView1 = (TextView) view.findViewById(R.id.textView1); //引用上面创建好的。就可以了,刚忘了修改 textView1.setText("改变"); } mView = inflater.inflate(R.layout.ui_listview, null);用mView查找 @birdsaction,用了你的办法,onCreateView中,可以产生view。但是在onActivityCreated中,view.findViewById(R.id.textView1),还是空。public class FragmentA extends Fragment { private View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_a, container, false); if (view == null) { Log.i("FragmentA", " onCreateView:view is null"); } else { Log.i("FragmentA", "onCreateView:view is NOOOOOOOOOOOOOOOOT null"); } return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (view == null) { Log.i("FragmentA", " onActivityCreated:view is null"); } else { Log.i("FragmentA", "onActivityCreated:view is NOOOOOOOOOOOOOOOOT null"); } TextView textView1 = (TextView) view.findViewById(R.id.textView1); if (textView1 == null) { Log.i("FragmentA", " onActivityCreated:textView1 is null"); } else { Log.i("FragmentA", "onActivityCreated:textView1 is NOOOOOOOOOOOOOOOOT null"); } //textView1.setText("改变"); }}logcat:06-04 16:56:26.953: D/ActivityThread(22471): setTargetHeapUtilization:0.2506-04 16:56:26.953: D/ActivityThread(22471): setTargetHeapIdealFree:838860806-04 16:56:26.953: D/ActivityThread(22471): setTargetHeapConcurrentStart:209715206-04 16:56:27.314: W/IconCustomizer(22471): can't load transform_config.xml06-04 16:56:27.344: I/FragmentA(22471): onCreateView:view is NOOOOOOOOOOOOOOOOT null06-04 16:56:27.344: I/FragmentA(22471): onActivityCreated:view is NOOOOOOOOOOOOOOOOT null06-04 16:56:27.344: I/FragmentA(22471): onActivityCreated:textView1 is null06-04 16:56:27.404: I/Adreno200-EGL(22471): <qeglDrvAPI_eglInitialize:294>: EGL 1.4 QUALCOMM build: (CL3090659)06-04 16:56:27.404: I/Adreno200-EGL(22471): Build Date: 09/03/13 Tue06-04 16:56:27.404: I/Adreno200-EGL(22471): Local Branch: 06-04 16:56:27.404: I/Adreno200-EGL(22471): Remote Branch: 06-04 16:56:27.404: I/Adreno200-EGL(22471): Local Patches: 06-04 16:56:27.404: I/Adreno200-EGL(22471): Reconstruct Branch: 哦。 这个我到没测试,我都是习惯在 onCreateView 里面把所有的view找到。这样做。 private View view; private TextView textView1 ; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_a, container, false); if (view == null) { Log.i("FragmentA", " onCreateView:view is null"); } else { Log.i("FragmentA", "onCreateView:view is NOOOOOOOOOOOOOOOOT null"); } textView1 = (TextView) view.findViewById(R.id.textView1); return view; } 先Inflate你的fragment布局,然后再用inflate fragment的View调用findViewById()查找 这样就成功了,在FragmentA的onStart等方法中,getActivity().findViewById(R.id.textView1) 就能得到这个TextView。直接继承 android.app.Fragment,就不行。也许是Android的bug吧。其实我是按照developer.android.com上的trainning的例子做的,那个例子是为了兼容android3.0以前的系统,继承了android.support.v4.app.Fragment,官方例子运行正常。我的手机是Android4.1的,可以支持Fragment,所以我直接继承了adnroid.app.Fragment,结果就死活不成功。想不到是这个原因。谢谢各位。结贴。 Android里该怎么做出音乐频谱的动画? 急!!!怎么对spinner下拉列表中的item进行各种操作??? 求教滑动控制思路 android mac下 usb 调试 android 提示add unimplemented methods 问题 管理员请进------ 文件浏览如何进行分页listview显示 Android连接firebird数据库时报错,如何解决谢谢:) SDK更新至22.6以后新手的关于findViewById的疑问 fragment中什么时候保存view的状态 ffmpeg 使用 关于被加密的sqlite数据库代码无法打开
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_a, container, false);
return view ;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
TextView textView1 = (TextView) getView().findViewById(R.id.textView1);
textView1.setText("改变");
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
TextView textView1 = (TextView) view.findViewById(R.id.textView1); //引用上面创建好的。就可以了,刚忘了修改
textView1.setText("改变");
}
用mView查找
private View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_a, container, false);
if (view == null) {
Log.i("FragmentA", " onCreateView:view is null");
} else {
Log.i("FragmentA", "onCreateView:view is NOOOOOOOOOOOOOOOOT null");
}
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (view == null) {
Log.i("FragmentA", " onActivityCreated:view is null");
} else {
Log.i("FragmentA", "onActivityCreated:view is NOOOOOOOOOOOOOOOOT null");
}
TextView textView1 = (TextView) view.findViewById(R.id.textView1);
if (textView1 == null) {
Log.i("FragmentA", " onActivityCreated:textView1 is null");
} else {
Log.i("FragmentA", "onActivityCreated:textView1 is NOOOOOOOOOOOOOOOOT null");
}
//textView1.setText("改变");
}
}
logcat:
06-04 16:56:26.953: D/ActivityThread(22471): setTargetHeapUtilization:0.25
06-04 16:56:26.953: D/ActivityThread(22471): setTargetHeapIdealFree:8388608
06-04 16:56:26.953: D/ActivityThread(22471): setTargetHeapConcurrentStart:2097152
06-04 16:56:27.314: W/IconCustomizer(22471): can't load transform_config.xml
06-04 16:56:27.344: I/FragmentA(22471): onCreateView:view is NOOOOOOOOOOOOOOOOT null
06-04 16:56:27.344: I/FragmentA(22471): onActivityCreated:view is NOOOOOOOOOOOOOOOOT null
06-04 16:56:27.344: I/FragmentA(22471): onActivityCreated:textView1 is null
06-04 16:56:27.404: I/Adreno200-EGL(22471): <qeglDrvAPI_eglInitialize:294>: EGL 1.4 QUALCOMM build: (CL3090659)
06-04 16:56:27.404: I/Adreno200-EGL(22471): Build Date: 09/03/13 Tue
06-04 16:56:27.404: I/Adreno200-EGL(22471): Local Branch:
06-04 16:56:27.404: I/Adreno200-EGL(22471): Remote Branch:
06-04 16:56:27.404: I/Adreno200-EGL(22471): Local Patches:
06-04 16:56:27.404: I/Adreno200-EGL(22471): Reconstruct Branch:
这样做。
private View view;
private TextView textView1 ;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_a, container, false);
if (view == null) {
Log.i("FragmentA", " onCreateView:view is null");
} else {
Log.i("FragmentA", "onCreateView:view is NOOOOOOOOOOOOOOOOT null");
}
textView1 = (TextView) view.findViewById(R.id.textView1);
return view;
}
这样就成功了,在FragmentA的onStart等方法中,getActivity().findViewById(R.id.textView1) 就能得到这个TextView。
直接继承 android.app.Fragment,就不行。也许是Android的bug吧。其实我是按照developer.android.com上的trainning的例子做的,那个例子是为了兼容android3.0以前的系统,继承了android.support.v4.app.Fragment,官方例子运行正常。
我的手机是Android4.1的,可以支持Fragment,所以我直接继承了adnroid.app.Fragment,结果就死活不成功。想不到是这个原因。谢谢各位。结贴。