0

アクティビティの開始時にアラート ボックスが表示されます。2 つのテキスト ボックスと 2 つの edittext ビューで構成されるカスタム ビューが表示されます。確認をクリックしてダイアログを閉じ、これらのフィールドに値を入力して新しいオブジェクトを作成すると、何らかの理由で NPE が表示されます。理由はわかりません。以下は、ダイアログボックスを作成する方法です。

    public Dialog createDialog(){
    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

    View v = getLayoutInflater().inflate(R.layout.order_dialog, null);
    builder.setView(v);

    final EditText tableNum = (EditText)MainActivity.this.findViewById(R.id.numberEntry);
    final EditText coverNum = (EditText)MainActivity.this.findViewById(R.id.coversEntry);

    builder.setMessage("Order Information");
    builder.setPositiveButton("Confirm", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int id) {
            //Create order object in here
            table = Integer.parseInt(tableNum.getText().toString());
            covers = Integer.parseInt(coverNum.getText().toString());
            order = new Order(covers,table);
            Toast.makeText(MainActivity.this, "order created!", Toast.LENGTH_SHORT).show();
            Toast.makeText(MainActivity.this, "order: " + "table: " + order.getTable() + " covers: " + order.getCovers(), Toast.LENGTH_SHORT).show();
        }
    });

    return builder.create();
}

これは私が得るエラーです。エラー:

java.lang.NullPointerException at com.example.waitron5.MainActivity$2.onClick(MainActivity.java:90)

ログ猫:

FATAL EXCEPTION: main
01-21 16:46:31.583: E/AndroidRuntime(11983): java.lang.NullPointerException
01-21 16:46:31.583: E/AndroidRuntime(11983):    at com.example.waitron5.MainActivity$2.onClick(MainActivity.java:87)
01-21 16:46:31.583: E/AndroidRuntime(11983):    at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
01-21 16:46:31.583: E/AndroidRuntime(11983):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-21 16:46:31.583: E/AndroidRuntime(11983):    at android.os.Looper.loop(Looper.java:137)
01-21 16:46:31.583: E/AndroidRuntime(11983):    at android.app.ActivityThread.main(ActivityThread.java:5039)
01-21 16:46:31.583: E/AndroidRuntime(11983):    at java.lang.reflect.Method.invokeNative(Native Method)
01-21 16:46:31.583: E/AndroidRuntime(11983):    at java.lang.reflect.Method.invoke(Method.java:511)
01-21 16:46:31.583: E/AndroidRuntime(11983):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-21 16:46:31.583: E/AndroidRuntime(11983):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-21 16:46:31.583: E/AndroidRuntime(11983):    at dalvik.system.NativeStart.main(Native Method)

これは私の order_dialog.xml レイアウト ファイルです。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp" >

    <!-- Table Number -->

    <TextView
        android:id="@+id/tablelabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Table Number: " />

    <EditText
        android:id="@+id/numberEntry"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number"
        android:width="40dp" >
    </EditText>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp" >

    <!-- Covers -->

    <TextView
        android:id="@+id/coverslabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Covers: " />

    <EditText
        android:id="@+id/coversEntry"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number"
        android:width="40dp" />
</LinearLayout>

この行 89 でエラーが発生しています:

table = Integer.parseInt(tableNum.getText().toString());
4

1 に答える 1

1

と置き換えるだけMainActivity.this.findViewByIdv.findViewByIdうまくいくはずです

于 2013-01-21T16:54:32.277 に答える