android - findViewById 在 fragment 中返回 null

标签 android android-layout android-fragments

我正在用新 fragment 替换现有 fragment 并且我能够看到我的 View 但是在按钮上设置点击监听器时它返回 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

预先感谢您的帮助

最佳答案

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;

您必须在您的 View 上调用 findViewById,而不是在您的 Activity 上。

关于android - findViewById 在 fragment 中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11385461/

相关文章:

android - 树解析器与流解析器

android - Firestore 安全规则仅允许访问特定查询而不是整个集合

android - executePendingTransactions 的递归入口( fragment 内没有 fragment )

java - 如何使用 fragment 自定义选项卡?

java - 将 fragment 作为参数传递?

android - 通过蓝牙传输二进制数据

java - 格式字符串 XXX 不是有效的格式字符串,因此不应将其传递给 String.format

android - 如何在 Samsung Galaxy S3 中加载大布局?

java - 将数据存储到 Parse 中时出现问题 - 使用 TextView

android - TabLayout 透明度