1

[保存] ボタンをクリックすると、ポップアップからテキスト フィールドの値を取得しようとしています。しかし、それはエラーを投げています。

コード:-

final Button btn_ContactDetails = (Button)findViewById(R.id.btn_ContactDetails);
btn_ContactDetails.setOnClickListener(new Button.OnClickListener(){

    public void onClick(View arg0) {
        LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.contactdetails, null, true);

        final PopupWindow popUp = new PopupWindow(layout, LayoutParams.WRAP_CONTENT,  LayoutParams.WRAP_CONTENT, true);
        popUp.setBackgroundDrawable(new BitmapDrawable());
        popUp.setOutsideTouchable(true);
        popUp.setTouchInterceptor(new OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                if(event.getAction() == MotionEvent.ACTION_OUTSIDE) {
                    popUp.dismiss();
                    return true;
                }
                return false;
            }
        });

        Button btnDismiss = (Button)layout.findViewById(R.id.dismiss);
            btnDismiss.setOnClickListener(new Button.OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    popUp.dismiss();
                }
            });

        //On click Save - Contact Details
        Button btn_Save_ContactDetails = (Button)layout.findViewById(R.id.btn_Save_ContactDetails);
        btn_Save_ContactDetails.setOnClickListener(new Button.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                EditText mEdit, sEdit;
                mEdit = (EditText)findViewById(R.id.txt_HouseNameNumber);
                sEdit = (EditText)findViewById(R.id.txt_Address1);
                sEdit.setText(mEdit.getText().toString());//THIS LINE IS THROWING ERROR
                popUp.dismiss();
            }
        });
        popUp.showAtLocation(layout, Gravity.CENTER, 0, 0);
    }
});

エラー :-

06-12 03:21:37.828: E/AndroidRuntime(518): FATAL EXCEPTION: main
06-12 03:21:37.828: E/AndroidRuntime(518): java.lang.NullPointerException
06-12 03:21:37.828: E/AndroidRuntime(518):  at sai.om.SaiActivity$3$3.onClick(SaiActivity.java:171)
06-12 03:21:37.828: E/AndroidRuntime(518):  at android.view.View.performClick(View.java:2408)
06-12 03:21:37.828: E/AndroidRuntime(518):  at android.view.View$PerformClick.run(View.java:8816)
06-12 03:21:37.828: E/AndroidRuntime(518):  at android.os.Handler.handleCallback(Handler.java:587)
06-12 03:21:37.828: E/AndroidRuntime(518):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-12 03:21:37.828: E/AndroidRuntime(518):  at android.os.Looper.loop(Looper.java:123)
06-12 03:21:37.828: E/AndroidRuntime(518):  at android.app.ActivityThread.main(ActivityThread.java:4627)
06-12 03:21:37.828: E/AndroidRuntime(518):  at java.lang.reflect.Method.invokeNative(Native Method)
06-12 03:21:37.828: E/AndroidRuntime(518):  at java.lang.reflect.Method.invoke(Method.java:521)
06-12 03:21:37.828: E/AndroidRuntime(518):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-12 03:21:37.828: E/AndroidRuntime(518):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-12 03:21:37.828: E/AndroidRuntime(518):  at dalvik.system.NativeStart.main(Native Method)

ここで私が間違っていることを誰かが見つけるのを手伝ってくれますか? エラーをスローする行にコメントを提供しました。

4

3 に答える 3

1

findViewById()アクティビティ内で使用していますが、親ビューから取得する必要があります。

v からビューを取得してみてください:

mEdit = (EditText) v.findViewById(R.id.txt_HouseNameNumber);
sEdit = (EditText) v.findViewById(R.id.txt_Address1);

layout.findViewById()または、またはを使用してみてくださいarg0.findViewById()

于 2012-06-11T22:21:40.630 に答える
1
sEdit.setText( mEdit.getText());//THIS LINE IS THROWING ERROR

最も可能性の高い理由は、またはそのいずれかsEdit(または両方) です。mEditnull

レイアウト ファイルを再確認して、 と の ID があることを確認しEditTextsます。つまり、スペルが正しいことを確認し、大文字と小文字の区別に注意してください。txt_HouseNameNumbertxt_Address1

編集:おそらく、次のように使用する必要がありlayout.findViewById(...)ますか?...

mEdit = (EditText)layout.findViewById(R.id.txt_HouseNameNumber);
sEdit = (EditText)layout.findViewById(R.id.txt_Address1);
于 2012-06-11T22:21:56.643 に答える
0

コピー時にエラーメッセージの一部を切り取ったと思います。また、

sEdit.setText( mEdit.getText().toString() );

メソッドsetText()は、通過するEditableオブジェクトを想定しているため、.toString()を呼び出すことにより、正しいタイプに変更されます。ただし、これはNullPointerExceptionと一致するとは思いません。そのため、sEditまたはmEditのいずれかが正しく初期化されていない可能性があります。これは、null.setTextまたはsEdit.setText(null)を実行しようとしていることを意味します。繰り返しになりますが、エラーメッセージをもう一度投稿してみてください。これは、これらのケースのどれであるかを区別できなかったためです。または、いくつかの単純なifステートメントを追加して、どれが正しく設定されていないかを確認します。

于 2012-06-11T22:28:50.457 に答える