Android 无法分析获取的空指针异常

Android 无法分析获取的空指针异常,android,android-emulator,Android,Android Emulator,01-3119:05:01.346:D/AndroidRuntime(650):关闭虚拟机 01-31 19:05:01.346:W/dalvikvm(650):threadid=1:线程以未捕获异常退出(组=0x40015560) 01-3119:05:01.366:E/AndroidRuntime(650):致命异常:主 01-31 19:05:01.366:E/AndroidRuntime(650):java.lang.RuntimeException:无法启动活动组件信息{com.exa

01-3119:05:01.346:D/AndroidRuntime(650):关闭虚拟机 01-31 19:05:01.346:W/dalvikvm(650):threadid=1:线程以未捕获异常退出(组=0x40015560) 01-3119:05:01.366:E/AndroidRuntime(650):致命异常:主 01-31 19:05:01.366:E/AndroidRuntime(650):java.lang.RuntimeException:无法启动活动组件信息{com.example.zlistactivity/com.example.zlistactivity.MainActivity}:java.lang.NumberFormatException: 01-31 19:05:01.366:E/AndroidRuntime(650):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 01-31 19:05:01.366:E/AndroidRuntime(650):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 01-3119:05:01.366:E/AndroidRuntime(650):在android.app.ActivityThread.access$1500(ActivityThread.java:117) 01-3119:05:01.366:E/AndroidRuntime(650):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 01-3119:05:01.366:E/AndroidRuntime(650):在android.os.Handler.dispatchMessage(Handler.java:99)上 01-3119:05:01.366:E/AndroidRuntime(650):在android.os.Looper.loop(Looper.java:123)上 01-3119:05:01.366:E/AndroidRuntime(650):位于android.app.ActivityThread.main(ActivityThread.java:3683) 01-31 19:05:01.366:E/AndroidRuntime(650):在java.lang.reflect.Method.Invokenactive(本机方法)中 01-3119:05:01.366:E/AndroidRuntime(650):位于java.lang.reflect.Method.invoke(Method.java:507) 01-3119:05:01.366:E/AndroidRuntime(650):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 01-3119:05:01.366:E/AndroidRuntime(650):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 01-3119:05:01.366:E/AndroidRuntime(650):在dalvik.system.NativeStart.main(本机方法) 01-31 19:05:01.366:E/AndroidRuntime(650):由以下原因引起:java.lang.NumberFormatException: 01-31 19:05:01.366:E/AndroidRuntime(650):位于org.apache.harmony.luni.util.FloatingPointParser.parseDouble(FloatingPointParser.java:267) 01-3119:05:01.366:E/AndroidRuntime(650):at java.lang.Double.parseDouble(Double.java:318) 01-3119:05:01.366:E/AndroidRuntime(650):at java.lang.Double.valueOf(Double.java:356) 01-31 19:05:01.366:E/AndroidRuntime(650):在com.example.zlistactivity.MainActivity.onCreate(MainActivity.java:22)上 01-3119:05:01.366:E/AndroidRuntime(650):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)上 01-31 19:05:01.366:E/AndroidRuntime(650):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 01-3119:05:01.366:E/AndroidRuntime(650):。。。还有11个
01-31 19:05:05.156:I/进程(650):发送信号。PID:650 SIG:9

在文本更改侦听器之前声明您的编辑文本:


我在日志中看不到NPE。我可以看到一个
java.lang.NumberFormatException
,它被抛出以指示应用程序已尝试将字符串转换为一种数值类型,但该字符串没有适当的格式请参见。我建议检查您的输入,因为它不是您所期望的。@andy parse to string格式正确。.发生错误的确切行号和文件位于stacktrace-
com.example.zlistactivity.MainActivity.onCreate(MainActivity.java:22)
-那一行是什么?@andy radius=Double.valueOf(et1.getText().toString());Java告诉您它无法将
et1.getText().toString()
转换为双精度。是否确定返回的字符串只包含可以用双精度表示的字符?请参阅
et2.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // TODO Auto-generated method stub
        et2 = (EditText) findViewById(R.id.editText2);
        area = Math.PI * radius * radius;
        String name = Double.toString(area);
        et2.setText(name);

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    @Override
    public void afterTextChanged(Editable s) {
        // TODO Auto-generated method stub

    }
});
et2 = (EditText) findViewById(R.id.editText2);
et2.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count){
    // TODO Auto-generated method stub
    area = Math.PI * radius * radius;
    String name = Double.toString(area);
    et2.setText(name);
}