我正在尝试使用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);
}
感谢所有帮助。
答案 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
?