尝试从意图获取额外内容时出现空指针异常



我创建了一个非常小的应用程序,我非常接近谷歌上的教程。应该没有问题,但现在我真的卡住了。我有两个活动,一个是MainActivity,一个叫做HalleActivity

MainActivity.java我有这个:

public final static String EXTRA_ID = "com.fifaltra.kletterscore.ID";
java.util.ArrayList<Data> listItems=new java.util.ArrayList<Data>();
ArrayAdapter<Data> adapter;
private ListView mListView;
final Context context = this;

[...]

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            listItems.get(position).increaseCount();
            Collections.sort(listItems, Data.vergleichen());
            adapter.notifyDataSetChanged();
            Intent intent = new Intent(context, HalleActivity.class);
            intent.putExtra(EXTRA_ID, listItems.get(position).getId());
            startActivity(intent);
        }
    });

HalleActivity.java中只有这个:

public class HalleActivity extends AppCompatActivity {
   Intent intent = getIntent();
   Bundle extras = intent.getExtras();
   long id = extras.getLong(MainActivity.EXTRA_ID);
}

现在,当我开始此操作时,只要单击该项目,应用程序就会崩溃,日志包含以下内容:

 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{fifaltra.kletterscore/fifaltra.kletterscore.HalleActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5041)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
            at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NullPointerException
            at fifaltra.kletterscore.HalleActivity.<init>(HalleActivity.java:11)
            at ...

其中第 11 行是 Bundle extras = intent.getExtras(); .我不知道这里出了什么问题,因为我在互联网上找到的每个示例看起来都像这样,所以我将不胜感激任何提示。

初始化活动之前,不能使用getIntent()。 那是onCreate. 在此之前,它返回 null,因此调用 intent.getExtra() NPE。

也许你应该使用.getStringExtra("com.fifaltra.kletterscore.ID");而不是捆绑包。

最新更新