尝试从intent

时间:2016-02-13 23:15:20

标签: java android android-intent

我创建了一个非常小的应用程序,我非常密切地基于可以在谷歌上找到的教程。应该没有问题,但现在我真的被卡住了。我有两个活动,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();。我不知道这里出了什么问题,因为我在互联网上找到的每一个例子看起来都是这样的,所以我很感激任何提示。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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