Android 无法推断为什么NullPointerException发生在代码的一部分而不是另一部分

Android 无法推断为什么NullPointerException发生在代码的一部分而不是另一部分,android,android-listview,arraylist,nullpointerexception,Android,Android Listview,Arraylist,Nullpointerexception,在我的应用程序中,我将Arraylist从一个活动传递到另一个活动。FlipCardActivity是父活动(活动A),RecipientsActivity是子活动(活动B)。我使用putExtra将空的RecipientArray(ArrayList)从A传递到B。在活动B中,我检查ArrayList的大小是否为零,如果为零,则调用另一个活动(活动C),然后将项目添加到ArrayList并将其返回给活动B。在B中,我使用ListView显示项目。我在活动B中有一个“后退”按钮,它完成B并重新启

在我的应用程序中,我将Arraylist从一个活动传递到另一个活动。FlipCardActivity是父活动(活动A),RecipientsActivity是子活动(活动B)。我使用putExtra将空的RecipientArray(ArrayList)从A传递到B。在活动B中,我检查ArrayList的大小是否为零,如果为零,则调用另一个活动(活动C),然后将项目添加到ArrayList并将其返回给活动B。在B中,我使用ListView显示项目。我在活动B中有一个“后退”按钮,它完成B并重新启动活动a。再次单击EditText时,活动B启动。现在ArrayList中仍有项,但当我将适配器设置为ListView以显示项时,它会给出一个NullPointerException。我无法弄清楚为什么会出现这个错误,因为我在OnActivityResult中重复了同一段代码,它没有给我任何错误

以下是我的部分代码:

在活动A中:

btn_rec = (ImageButton) findViewById(R.id.btn_rec);
    btn_rec.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Intent rec_Intent = new Intent(FlipCardActivity.this,
                    RecipientsActivity.class);
            rec_Intent.putExtra("RecArray", RecipientArray);
            startActivityForResult(rec_Intent, NO_OF_RECIPIENTS);

        }
    });
单击按钮btn_rec时,活动B开始

在活动B中:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    RecipientArray = (ArrayList<Person>) getIntent().getSerializableExtra(
            "RecArray");

    Log.e("Recipient Array", "size = " + RecipientArray.size());
    if (RecipientArray.size() == 0) {  //activity C is started here
        Intent rec_addr_Intent = new Intent(RecipientsActivity.this,
                RecipientAddressActivity.class);
        rec_addr_Intent.putExtra("RecArray", RecipientArray);
        startActivityForResult(rec_addr_Intent, REC_INFO);
    } else {
        SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(this.getApplicationContext());
        int size = prefs.getInt("size", 0);
        for (int i = 0; i < size; i++) {
            String json = prefs.getString("RecList_" + i, "");
            Gson gson = new Gson();
            Person p = gson.fromJson(json, Person.class);
            RecipientArray.add(p);
        }
        // Log.e("RecListActivity","Size of arraylist"+RecipientArray.size());

        this.m_adapter = new CustomListAdapter(RecipientsActivity.this,
                R.layout.recipients_list, RecipientArray);
        list = (ListView) findViewById(R.id.rec_list);
        list.setAdapter(m_adapter);//I get NullPointer Exception here
    }

    setContentView(R.layout.activity_recipients);
    addListenerForButtons();
}
你在干什么

 list = (ListView) findViewById(R.id.rec_list);
在你之前

setContentView(R.layout.activity_recipients);

请将setContentView移到第一行,否则findViewById将无法找到任何内容,这就是为什么您会得到空指针的原因。

@geet请在recipientActivity中第63行的上方找到logcat文件?它位于列表中。setAdapter(m_adapter);在Oncreate方法中。。我也在上面的代码中展示了它。我认为setContentView应该在后面savedInstanceState@AstralProjection你能看看这个问题并帮我解决这个问题吗?宾果!我们有同样的想法@卡洛斯·罗伯斯非常感谢!错过了这个简单的事情。@CarlosRobles嘿,我还有一个问题要解决。你能看看这个问题并帮我解决吗。谢谢
 list = (ListView) findViewById(R.id.rec_list);
setContentView(R.layout.activity_recipients);