4

アクティビティとフラグメントがあります。フラグメントにはボタンがあります。

フラグメントをロードします。

fragment = new FragmentPIN(this);                   
fragmentTransaction.add(R.id.content,fragment);         
fragmentTransaction.commit();

次に、リスナーを設定してみてください

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    try {

        Button cmdOK_PIN = (Button)activity.findViewById(R.id.cmdOK_PIN);
        cmdOK_PIN.setOnClickListener(new View.OnClickListener() {                       
            @Override
            public void onClick(View v) {

            }

        });

    } catch (ClassCastException e) {
        e.printStackTrace();
    }
}

しかし、setOnClickListener 呼び出しで常にヌル ポインター例外が発生します。リスナーを設定しようとする前に、フラグメント トランザクションがコミットされます。あるいはそうだと思います。これを行うには、別のオーバーライドを使用する必要がありますか?

4

2 に答える 2

10

リスナーをのonActivityCreated代わりに設定する場所を変更してみてくださいonAttachAndroidドキュメントによると:

onActivityCreatedは、フラグメントのアクティビティが作成され、このフラグメントのビュー階層がインスタンス化されたときに呼び出されます。

onAttachアクティビティがビューを設定する前に電話をかけると

于 2012-10-03T22:51:22.013 に答える