ResultCode和RequestCode不起作用

时间:2016-07-22 02:45:03

标签: android

我使用请求代码从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时,它不会运行?

1 个答案:

答案 0 :(得分:1)

应该使用已启动的活动中的预定义值RESULT_OKRESULT_CANCELLEDRESULT_FIRST_USER之一设置结果代码。

设置值如3和4不一定具有已定义的行为;如果它们对你有意义(并且不仅仅是随机的),那么将它们作为另一个额外的意图传递回去。在他们的位置使用RESULT_OK

此外,对于您用来传回结果的Intent,我建议使用new Intent()创建一个新的,而不是重用用于启动活动的那个(getIntent()给你)。

无论如何,我建议您查看this section of the docs,其中涉及开始活动和获取结果。