8

既存のフラグメントを新しいフラグメントに置き換えています。ビューを表示できますが、ボタンのクリックリスナーを設定しているときに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もインポートしました

よろしくお願いします

4

2 に答える 2

23
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を呼び出す必要があります。

于 2012-07-08T19:30:36.553 に答える
0

その理由は、onCreateViewではフラグメントのビューがまだ作成されていないため、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);   
}
于 2016-01-12T10:09:10.467 に答える