findViewById возвращает ноль во фрагменте

Я заменяю существующий фрагмент новым фрагментом, и я могу видеть мое представление, но при установке прослушивателя щелчка на кнопке он возвращает ноль. Я получаю следующее исключение:

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

Заранее спасибо за помощь

 Houcine08 июл. 2012 г., 20:19
Пожалуйста, добавьте код в метод onCreateView (), особенно в строке 34 вашего класса xxxxx.java, и добавьте макет xml для своего фрагмента.
 Preethi08 июл. 2012 г., 20:27
Спасибо за ответ . Я раздул представление в OnCreateView фрагмента, поэтому я могу просматривать фрагмент, но не могу установить любой тип слушателей, так как моя кнопка кажется пустой (даже если я вижу кнопку)
 Preethi08 июл. 2012 г., 20:16
Я уже очистил и восстановил R.java.
 Houcine08 июл. 2012 г., 20:39
я знаю, но добавьте ваш код и, в частности, то, что я сказал вам в своем первом комментарии, если нет, то я не могу вам помочь, я должен увидеть код, чтобы определить, в чем проблема вашего нулевого указателя, может быть идентификатор вашей кнопки, может быть R.java, я думаю, что вы импортировали Android.R, а не ваш com.yourpackage.R
 ania08 июл. 2012 г., 21:04
Но ваша кнопка в представлении фрагмента или в представлении активности? Это в макете capture_card_phone_number?

Ответы на вопрос(2)

Решение Вопроса
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 по вашему мнению, а не по вашей активности.

 06 авг. 2013 г., 22:35
есть ли причина, по которой вы используете findviewbyid для действия в действии, но для представления во фрагменте?

Причина в том, что в onCreateView представление фрагмента еще не создано, поэтому он возвращает ноль. Попробуйте сделать это в 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);   
}

Ваш ответ на вопрос