0

我有一个问题,RuntimeException每次我尝试使用此代码开始新活动时都会遇到问题:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.menu_add:
        startActivity(new Intent(this, Addmark.class));
        break;
    }
    return super.onOptionsItemSelected(item);
}

我尝试在其中启动新活动的活动是使用以下代码调用的:

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long id) {
    Cursor cursor = db.getSubject(id);
    String subject = null;
    try {
        subject = cursor.getString(cursor.getColumnIndex("subject"));
    } catch (Exception e) {
        e.printStackTrace();
    }
    Intent intent = new Intent(Main.this, Marks.class);
    intent.putExtra("selected", subject);
    startActivity(intent);
}

因为这种异常类型有很多原因,所以我无法找到解决方案,但这可能是一些简单的事情,我只是没有看到它。

这是 LogCat:

10-15 17:30:33.064: E/AndroidRuntime(5926): FATAL EXCEPTION: main
10-15 17:30:33.064: E/AndroidRuntime(5926): java.lang.RuntimeException: Unable to start activity ComponentInfo{maturaarbeit.nicola_pfister.marks/maturaarbeit.nicola_pfister.marks.Addmark}: java.lang.NullPointerException
10-15 17:30:33.064: E/AndroidRuntime(5926):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at android.os.Looper.loop(Looper.java:137)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at android.app.ActivityThread.main(ActivityThread.java:4424)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at java.lang.reflect.Method.invokeNative(Native Method)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at java.lang.reflect.Method.invoke(Method.java:511)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at dalvik.system.NativeStart.main(Native Method)
10-15 17:30:33.064: E/AndroidRuntime(5926): Caused by: java.lang.NullPointerException
10-15 17:30:33.064: E/AndroidRuntime(5926):     at maturaarbeit.nicola_pfister.marks.database.DBAdapter.getAllSubjects(DBAdapter.java:150)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at maturaarbeit.nicola_pfister.marks.Addmark.getSubjectSpinner(Addmark.java:38)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at maturaarbeit.nicola_pfister.marks.Addmark.onCreate(Addmark.java:31)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at android.app.Activity.performCreate(Activity.java:4465)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
10-15 17:30:33.064: E/AndroidRuntime(5926):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
10-15 17:30:33.064: E/AndroidRuntime(5926):     ... 11 more

感谢您的帮助!

4

1 回答 1

0

错误可能是由两个原因引起的 1)在 Addmark Activity 中,检查这种情况下的 id 是否存在R.id.view,很可能是 NUllPointerException 的原因

   TextView tv = findViewById(R.id.view);
   tv.setText("Some text");

2)如果你使用startActivityForResult()你必须在调用活动中覆盖这个方法。如需更多参考,请阅读https://stackoverflow.com/a/23925196/6751183

于 2018-09-18T13:12:10.580 回答