findViewById返回的片段空 [英] findViewById returning null in fragment

查看:121
本文介绍了findViewById返回的片段空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我更换新的片段现有的片段,我能看到我的看法,但同时对按钮,点击设置监听返回null。我得到以下异常:

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

我不知道发生了什么事?

在OnCreateView的code:

 公开查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
        查看查看= inflater.inflate(R.layout.capture_card_phone_number,集装箱,FALSE);
        mPhone =(AutoCompleteTextView)getActivity()findViewById(R.id.phone_number)。
        按钮旁边=(按钮)getActivity()findViewById(R.id.capture_phone_next)。
        next.setOnClickListener(本);
        // next.setEnabled(假);        返回视图。

我还引进com.big.xxxxxxx.R

在此先感谢您的帮助。


解决方案

 公开查看onCreateView(LayoutInflater吹气,ViewGroup中的容器中,包    savedInstanceState){
            查看查看= inflater.inflate(R.layout.capture_card_phone_number,集装箱,FALSE);
            mPhone =(AutoCompleteTextView)getActivity()findViewById(R.id.phone_number)。
            按钮旁边=(按钮)** **观点findViewById(R.id.capture_phone_next)。
            next.setOnClickListener(本);
            // next.setEnabled(假);            返回视图。

您必须调用findViewById对你的观点 - 不是你的活动

I am replacing the existing fragment with new fragment and i am able to see my view but while setting on click listener on the button it returns null . I get the following exception :

?:??: 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)

I have no clue what is happening ?

The code on 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;

I have also imported com.big.xxxxxxx.R

Thanks in advance for your help

解决方案

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);
            // next.setEnabled(false);

            return view;

You have to call findViewById on your view - not on your activity.

这篇关于findViewById返回的片段空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆