getStringArrayListExtra为size()返回nullpointerexception

时间:2015-03-18 03:56:56

标签: java android android-intent nullpointerexception

我正在尝试使用getStringArrayListExtra()来获取通过intent传递的字符串的数组列表。基本上,我从活动中的listView获取字符串,将它们传递给一个活动,然后将其传递到服务中以执行我需要它执行的操作。当我尝试拨打.size()时出现问题。它会抛出nullpointerexception。

这是我到目前为止使用的代码:

FirstActivity:

public void chatStart(View v){

    //Clears all duplicates
    Set setItems = new LinkedHashSet(selectedFriend);
    selectedFriend.clear();
    selectedFriend.addAll(setItems);

    Intent intent = new Intent(this, TestScreen.class);
    intent.putStringArrayListExtra("Friend_List", selectedFriend);
    startActivity(intent);

}

SecondActivity

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

    Intent intent = getIntent();

    setContentView(R.layout.testscreen);

    EditText et = (EditText)findViewById(R.id.friendsList);
    ArrayList<String> itemlist = intent.getStringArrayListExtra("Friend_List");

    for(int i = 0; i<itemlist.size(); i++){

        if(itemlist.get(i) == null){
            Toast.makeText(this,"Something Went Wrong",Toast.LENGTH_SHORT).show();

        }else{

            et.append(itemlist.get(i) + " ");

        }

    }

}

public void createStream(View view){

    Intent intent = getIntent();

    EditText et = (EditText)findViewById(R.id.friendsList);
    EditText et2 = (EditText)findViewById(R.id.message);

    ArrayList<String> itemlist2 = intent.getStringArrayListExtra("Friend_List");

    if(et2.getText().toString() != null && et.getText().toString() != null){
        Intent intent2 = new Intent(this, StreamBuilder.class);

        intent.putStringArrayListExtra("Friend_List",itemlist2);
        intent.putExtra("Stream_Title",et.getText().toString());
        intent.putExtra("Message",et2.getText().toString());

        startService(intent2);

    }else{
        Toast.makeText(this, "Please Fill In All Fields", Toast.LENGTH_LONG).show();

    }



}

服务

@Override
public int onStartCommand(Intent intent, final int flags, final int startId) {

    ArrayList<String> users = intent.getStringArrayListExtra("Friend_List");

    String title = intent.getStringExtra("Stream_Title");


    for (int i = 0; i < users.size(); i++) { //Where the nullpointerexception error occurs

        //Do This

    }

    stopSelf()

    return super.onStartCommand(intent, flags, startId);

}

感谢所有帮助。

2 个答案:

答案 0 :(得分:0)

您是否能够在SecondActivity中获取列表?

ArrayList<String> itemlist = intent.getStringArrayListExtra("Friend_List");

如果是,我相信方法createStream(View v)是在同一个类中定义的,所以如果是这种情况,请将上面的ArrayList作为全局,当你启动服务时,将这个传递给Intent。

如果我能提供更多帮助,请告诉我。

答案 1 :(得分:0)

调用users.size() =&gt;时,您会收到零点异常您服务中的users为空 可能是您没有ArrayList成功,或者您没有正确地将ArrayList放入Intent

FirstActivity中,我对setItems用于什么感到困惑?为什么不直接将selectedFriend放入Intent