来自EditText的Textview setText在警告对话框中

时间:2014-06-08 15:45:03

标签: android android-edittext textview alertdialog settext

  • 这段代码有什么问题?该申请已被停止。

       public void names (View v) {
           AlertDialog.Builder alert = new AlertDialog.Builder(this);
           LayoutInflater inflater = getLayoutInflater();
           alert.setView(inflater.inflate(R.layout.dialog_signin, null));
           alert.setTitle("Set players names");
           alert.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   TextView j=(TextView)findViewById(R.id.textView2);
                   TextView k=(TextView)findViewById(R.id.textView3);
                   EditText l=(EditText)findViewById(R.id.player1);
                   EditText m=(EditText)findViewById(R.id.player2);
                   String name1 = l.getText().toString();
                   String name2 = m.getText().toString();
                   j.setText(name1);
                   k.setText(name2);
               }
           });
           AlertDialog dialog = alert.create();
           dialog.show();   
       }
    

    logcat的:

    06-08 18:07:20.613:D / libEGL(20332):已加载/vendor/lib/egl/libEGL_adreno.so    06-08 18:07:20.613:D / libEGL(20332):已加载/vendor/lib/egl/libGLESv1_CM_adreno.so    06-08 18:07:20.623:D / libEGL(20332):已加载/vendor/lib/egl/libGLESv2_adreno.so    06-08 18:07:20.623:I / Adreno-EGL(20332):: EGL 1.4 QUALCOMM build:(CL4169980)    06-08 18:07:20.623:I / Adreno-EGL(20332):OpenGL ES着色器编译器版本:17.01.10.SPL    06-08 18:07:20.623:I / Adreno-EGL(20332):建造日期:12/01/13 Sun    06-08 18:07:20.623:I / Adreno-EGL(20332):当地分行:    06-08 18:07:20.623:I / Adreno-EGL(20332):远程分支:    06-08 18:07:20.623:I / Adreno-EGL(20332):本地补丁:    06-08 18:07:20.623:I / Adreno-EGL(20332):重建分支:    06-08 18:07:20.673:D / OpenGLRenderer(20332):启用调试模式0    06-08 18:07:26.448:D / AndroidRuntime(20332):关闭VM    06-08 18:07:26.458:W / dalvikvm(20332):threadid = 1:线程退出未捕获异常(组= 0x415898b0)    06-08 18:07:26.458:E / AndroidRuntime(20332):致命异常:主要    06-08 18:07:26.458:E / AndroidRuntime(20332):java.lang.NullPointerException    06-08 18:07:26.458:E / AndroidRuntime(20332):at com.example.game.MainActivity $ 1.onClick(MainActivity.java:87)    06-08 18:07:26.458:E / AndroidRuntime(20332):at com.android.internal.app.AlertController $ ButtonHandler.handleMessage(AlertController.java:171)    06-08 18:07:26.458:E / AndroidRuntime(20332):在android.os.Handler.dispatchMessage(Handler.java:99)    06-08 18:07:26.458:E / AndroidRuntime(20332):在android.os.Looper.loop(Looper.java:213)    06-08 18:07:26.458:E / AndroidRuntime(20332):在android.app.ActivityThread.main(ActivityThread.java:5225)    06-08 18:07:26.458:E / AndroidRuntime(20332):at java.lang.reflect.Method.invokeNative(Native Method)    06-08 18:07:26.458:E / AndroidRuntime(20332):at java.lang.reflect.Method.invoke(Method.java:525)    06-08 18:07:26.458:E / AndroidRuntime(20332):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:741)    06-08 18:07:26.458:E / AndroidRuntime(20332):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)    06-08 18:07:26.458:E / AndroidRuntime(20332):at dalvik.system.NativeStart.main(Native Method)

    1. 
    
       06-08 18:15:27.578: D/AndroidRuntime(20809): Shutting down VM
               06-08 18:15:27.578: W/dalvikvm(20809): threadid=1: thread exiting with uncaught exception (group=0x415898b0)
               06-08 18:15:27.578: E/AndroidRuntime(20809): FATAL EXCEPTION: main
               06-08 18:15:27.578: E/AndroidRuntime(20809): java.lang.NullPointerException
               06-08 18:15:27.578: E/AndroidRuntime(20809):     at com.example.game.MainActivity$1.onClick(MainActivity.java:92)
               06-08 18:15:27.578: E/AndroidRuntime(20809):     at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:171)
               06-08 18:15:27.578: E/AndroidRuntime(20809):     at android.os.Handler.dispatchMessage(Handler.java:99)
               06-08 18:15:27.578: E/AndroidRuntime(20809):     at android.os.Looper.loop(Looper.java:213)
               06-08 18:15:27.578: E/AndroidRuntime(20809):     at android.app.ActivityThread.main(ActivityThread.java:5225)
               06-08 18:15:27.578: E/AndroidRuntime(20809):     at java.lang.reflect.Method.invokeNative(Native Method)
               06-08 18:15:27.578: E/AndroidRuntime(20809):     at java.lang.reflect.Method.invoke(Method.java:525)
               06-08 18:15:27.578: E/AndroidRuntime(20809):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
               06-08 18:15:27.578: E/AndroidRuntime(20809):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
               06-08 18:15:27.578: E/AndroidRuntime(20809):     at dalvik.system.NativeStart.main(Native Method)
               06-08 18:15:29.079: I/Process(20809): Sending signal. PID: 20809 SIG: 9
    

1 个答案:

答案 0 :(得分:1)

NPE

获取值时,您必须获得EditText

请尝试以下操作:

final View myLayout = inflater.inflate(R.layout.dialog_screen, null);
    alert.setView(myLayout);
    alert.setTitle("Set players names");

    alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            TextView j=(TextView)myLayout.findViewById(R.id.textView2);
            TextView k=(TextView)myLayout.findViewById(R.id.textView3);
            EditText l=(EditText)myLayout.findViewById(R.id.player1);
            EditText m=(EditText)myLayout.findViewById(R.id.player2);
            String name1 = l.getText().toString();
            String name2 = m.getText().toString();
            j.setText(name1);
            k.setText(name2);
            Log.i("j"+name1, "k"+name2);
        }
    });