我使用请求代码从MainActivity
致电InfomationActivity
。但是,当返回MainActivity
时,它处于不活动状态。这有什么问题?
在MainActivity
中,使用请求代码致电InfomationActivity
:
Intent intent = new Intent(MainActivity.this, InfomationActivity.class);
startActivityForResult(intent, 100);
在InfomationActivity
中,返回结果代码:
if(btnAlarmInfo.getVisibility() == View.VISIBLE){
//run
Log.d("abc", note.getTitle() + "/" + note.getNote() + "/" + note.getDateTime() + "/" + note.getColorBackground());
Log.d("abc", Integer.toString(images.size()));
Intent intent = getIntent();
intent.putExtra("title", note.getTitle());
intent.putExtra("note", note.getNote());
intent.putExtra("time", note.getDateTime());
intent.putExtra("color", note.getColorBackground());
intent.putParcelableArrayListExtra("image", images);
setResult(3, intent);
finish();
}else{
//run
Intent intent = getIntent();
intent.putExtra("title", note.getTitle());
intent.putExtra("note", note.getNote());
intent.putExtra("time", note.getDateTime());
intent.putExtra("color", note.getColorBackground());
intent.putExtra("day", note.getDayAlarm());
intent.putExtra("hour", note.getHourAlarm());
intent.putParcelableArrayListExtra("image", images);
setResult(4, intent);
finish();
}
当MainActivity
返回时:
if(requestCode == 100){
if(resultCode == 3){
//not run ????????
Log.d("abc", "it's me");
String title = data.getExtras().getString("title");
String note = data.getExtras().getString("note");
String time = data.getExtras().getString("time");
String color = data.getExtras().getString("color");
ArrayList<Image> image = data.getParcelableArrayListExtra("image");
Log.d("abc", Integer.toString(image.size()));
ArrayList<Bitmap> bitmaps = new ArrayList<Bitmap>();
for(int i = 0; i < image.size(); i++){
bitmaps.add(image.get(i).getImage());
}
Note note1 = new Note(title, note, false, time, color, "", "", bitmaps);
this.addNote(note1);
}else if(resultCode == 4){
//run
String title = data.getExtras().getString("title");
String note = data.getExtras().getString("note");
String time = data.getExtras().getString("time");
String color = data.getExtras().getString("color");
String day = data.getExtras().getString("day");
String hour = data.getExtras().getString("hour");
ArrayList<Image> image = data.getParcelableArrayListExtra("image");
ArrayList<Bitmap> bitmaps = new ArrayList<Bitmap>();
for(int i = 0; i < image.size(); i++){
bitmaps.add(image.get(i).getImage());
}
Note note1 = new Note(title, note, true, time, color, day, hour, bitmaps);
this.addNote(note1);
}
}
在logcat中,我发现当resultcode = 3时它没有运行。为什么当resultcode = 3时,它不会运行?
答案 0 :(得分:1)
应该使用已启动的活动中的预定义值RESULT_OK
,RESULT_CANCELLED
或RESULT_FIRST_USER
之一设置结果代码。
设置值如3和4不一定具有已定义的行为;如果它们对你有意义(并且不仅仅是随机的),那么将它们作为另一个额外的意图传递回去。在他们的位置使用RESULT_OK
。
此外,对于您用来传回结果的Intent,我建议使用new Intent()
创建一个新的,而不是重用用于启动活动的那个(getIntent()
给你)。
无论如何,我建议您查看this section of the docs,其中涉及开始活动和获取结果。