0

2 つのボタンを持つ popUp ウィンドウを実装しようとしています。ボタン付きのポップアップウィンドウを正常に表示できます。ボタンアクションを実装しようとしています。しかし、ヌルポインタ例外が発生します。

これが私のコードです。

View pview =inflater.inflate(R.layout.popupxml(ViewGroup)findViewById(R.layout.activity_event_detail));
popUp = new PopupWindow(pview);
registerBtn = (Button) findViewById(R.id.registerButton);
registerBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub      

            signUp = (Button) findViewById(R.id.signUpExplore);
            notNow = (Button) findViewById(R.id.notNow);

            final OnClickListener notNowClickListner = new OnClickListener() 
              {
                public void onClick(View v) 
                {
                    popUp.dismiss();
                    click = true;
                }
              };


            if (click) {
// I get the null pointer exception in this line.                   
                notNow.setOnClickListener(notNowClickListner);
                popUp.showAtLocation(v, Gravity.CENTER_VERTICAL, 0, 0);
                popUp.update(0, 50, 300, 150);



                click = false;

            } else {
                popUp.dismiss();
                click = true;
            }

        }
    });

これがlogCAtです

04-22 15:42:07.269: E/AndroidRuntime(8575): FATAL EXCEPTION: main
04-22 15:42:07.269: E/AndroidRuntime(8575): java.lang.NullPointerException
04-22 15:42:07.269: E/AndroidRuntime(8575): at com.strive.gostrive.EventDetailActivity$1.onClick(EventDetailActivity.java:153)
04-22 15:42:07.269: E/AndroidRuntime(8575): at   android.view.View.performClick(View.java:2485)
04-22 15:42:07.269: E/AndroidRuntime(8575): at android.view.View$PerformClick.run(View.java:9080)
04-22 15:42:07.269: E/AndroidRuntime(8575): at android.os.Handler.handleCallback(Handler.java:587)
04-22 15:42:07.269: E/AndroidRuntime(8575): at android.os.Handler.dispatchMessage(Handler.java:92)
04-22 15:42:07.269: E/AndroidRuntime(8575): at android.os.Looper.loop(Looper.java:130)
04-22 15:42:07.269: E/AndroidRuntime(8575): at android.app.ActivityThread.main(ActivityThread.java:3687)
04-22 15:42:07.269: E/AndroidRuntime(8575): at java.lang.reflect.Method.invokeNative(Native Method)
04-22 15:42:07.269: E/AndroidRuntime(8575): at java.lang.reflect.Method.invoke(Method.java:507)
04-22 15:42:07.269: E/AndroidRuntime(8575): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
04-22 15:42:07.269: E/AndroidRuntime(8575): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
04-22 15:42:07.269: E/AndroidRuntime(8575): at dalvik.system.NativeStart.main(Native Method)

多くの例を参照しました。しかし、私にとっては何も役に立ちませんでした。

助けが必要!!

4

2 に答える 2

2

buttonsこのように初期化する必要があると思います

signUp = (Button) popUp.findViewById(R.id.signUpExplore);
notNow = (Button) popUp.findViewById(R.id.notNow);

呼び出した後popUp.setContentView(pview);

あなたは彼らにとって間違った場所を探しているので、彼らは戻ってきていますnull

于 2013-04-22T20:43:53.730 に答える