findViewById在fragment中返回null

我用新的片段replace现有的片段,我能够看到我的看法,但设置点击监听器上的button,它返回null。 我得到以下例外:

?:??: W/?(?): java.lang.NullPointerException ?:??: W/?(?): at com.biggu.shopsavvy.fragments.xxxxxxxx.onCreateView(xxxxxx.java:34) ?:??: W/?(?): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:870) ?:??: W/?(?): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080) ?:??: W/?(?): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622) ?:??: W/?(?): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416) ?:??: W/?(?): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420) ?:??: W/?(?): at android.os.Handler.handleCallback(Handler.java:615) ?:??: W/?(?): at android.os.Handler.dispatchMessage(Handler.java:92) ?:??: W/?(?): at android.os.Looper.loop(Looper.java:137) ?:??: W/?(?): at android.app.ActivityThread.main(ActivityThread.java:4745) ?:??: W/?(?): at java.lang.reflect.Method.invokeNative(Native Method) ?:??: W/?(?): at java.lang.reflect.Method.invoke(Method.java:511) ?:??: W/?(?): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) ?:??: W/?(?): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) ?:??: W/?(?): at dalvik.system.NativeStart.main(Native Method) 

我不知道发生了什么?

OnCreateView上的代码:

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.capture_card_phone_number, container, false); mPhone = (AutoCompleteTextView) getActivity().findViewById(R.id.phone_number); Button next = (Button) getActivity().findViewById(R.id.capture_phone_next); next.setOnClickListener(this); // next.setEnabled(false); return view; 

我也导入了com.big.xxxxxxx.R

在此先感谢您的帮助

Solutions Collecting From Web of "findViewById在fragment中返回null"

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.capture_card_phone_number, container, false); mPhone = (AutoCompleteTextView) getActivity().findViewById(R.id.phone_number); Button next = (Button) view.findViewById(R.id.capture_phone_next); next.setOnClickListener(this); return view; 

你必须在你的视图上调用findViewById,而不是在你的活动上。

原因是在onCreateView的片段视图尚未创build,所以它返回null。 尝试在onResume中做到这一点,它会返回您的观点:

 @Override public void onResume() { super.onResume(); mPhone = (AutoCompleteTextView) getActivity().findViewById(R.id.phone_number); Button next = (Button) getActivity().findViewById(R.id.capture_phone_next); next.setOnClickListener(this); }