-3

美好的一天

我正在尝试创建一个显示 toast 消息 onResume 的程序,但是该应用程序在启动前崩溃了,我不知道如何修复它。提供的链接好像我的问题是重复的,甚至不能帮助我解决这个问题。但是我已经根据那个问题更改了我的代码并且发生了同样的错误

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button btn ;
    btn=(Button)findViewById(R.id.button);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(MainActivity.this, ActivityTwo.class);
            startActivity(i);
        }
    });

}
public void onResume(){
    super.onResume();
    String vlue=new String();
    Intent i = getIntent();
    Bundle b = i.getExtras();
    if(b.getString("val")!=null){
        vlue = b.getString("val");
    }
    String comp="false";
    if(vlue==comp){
        Toast.makeText(this,"The subactivity finished",Toast.LENGTH_LONG).show();
    }

}

Logcat 堆栈

12-09 02:27:16.460 4808-4808/com.example.myapplication W/System:ClassLoader 引用未知路径:/data/app/com.example.myapplication-2/lib/x86 12-09 02:27:17.146 4808-4808/com.example.myapplication W/System:ClassLoader 引用了未知路径:/data/app/com.example.myapplication-2/lib/x86 12-09 02:27:17.353 4808-4808/com.example。 myapplication W/art:验证 java.lang.Object com.example.myapplication.MainActivity.access$super(com.example.myapplication.MainActivity, java.lang.String, java.lang.Object[]) 耗时 150.015ms 12 -09 02:27:17.403 4808-4808/com.example.myapplication W/art:在 Android 4.1 之前,方法 android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android. content.res.ColorStateList,android.graphics。PorterDuff$Mode) 会错误地覆盖 android.graphics.drawable.Drawable 12-09 02:27:17.488 4808-4808/com.example.myapplication D/AndroidRuntime 中的 package-private 方法:关闭 VM 12-09 02:27:17.488 4808-4808/com.example.myapplication E/AndroidRuntime:致命异常:主进程:com.example.myapplication,PID:4808 java.lang.RuntimeException:无法恢复活动 {com.example .myapplication/com.example.myapplication.MainActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String android.os.Bundle.getString(java.lang.String)” android.app.ActivityThread.performResumeActivity(ActivityThread.java:3103) 在 android.app.ActivityThread。handleResumeActivity(ActivityThread.java:3134) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread. java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread。main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal。 os.ZygoteInit.main(ZygoteInit.java:616) 原因:java.lang.NullPointerException:尝试在 null 上调用虚拟方法 'java.lang.String android.os.Bundle.getString(java.lang.String)' com.example.myapplication.MainActivity.onResume(MainActivity.java:32) 在 android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092) 在 android.app.Activity.performResume(Activity.java:6312) 在 android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)。 app.ActivityThread.handleResumeActivity(ActivityThread.java:3134) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481) 在android.app。ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop( Looper.java:148) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller 的 java.lang.reflect.Method.invoke(Native Method) 的 android.app.ActivityThread.main(ActivityThread.java:5417)。在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 处运行(ZygoteInit.java:726) 

这是第二课

public class ActivityTwo extends Activity {

@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    setContentView(R.layout.activity_two);
    Button btn ,finish;
    btn=(Button)findViewById(R.id.button3);
    finish=(Button)findViewById(R.id.button4);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(ActivityTwo.this, MainActivity.class);
            startActivity(i);
        }
    });
    finish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            finish();
        }
    });}




public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
    String name="false";
    Intent i = new Intent(ActivityTwo.this, MainActivity.class);
    i.putExtra("vla", name);
    startActivity(i);
    return false;
}
return super.onKeyDown(keyCode, event);}}
4

1 回答 1

0

你在这里得到一个空指针异常

Bundle b = i.getExtras();
String vlue = b.getString("val");

'b' 为空。没有额外的意图。b.getString() 抛出和 NPE 异常

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference 
于 2016-12-08T23:34:37.677 回答