安卓:失败交付结果ResultInfo [英] Android:Failure delivering result ResultInfo

查看:242
本文介绍了安卓:失败交付结果ResultInfo的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 TabHost 一个Activity A,A startActivityForResult(B)那么B startActivityForResult(C)。结果
我遇到的问题是:结果
在C语言中,当我的setResult(RESULT_OK,意图),发生

I have an Activity A in TabHost, A startActivityForResult(B) then B startActivityForResult(C).
The problem I meet is that:
In C when I setResult(RESULT_OK, intent), occur

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { (has extras) }} to activity {com.hackingtrace.vancexu/com.hackingtrace.vancexu.task.B}: java.lang.NullPointerException

在B,我开始下用

setTimeButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            Intent i = new Intent(view.getContext(), TaskTimeSet.class);
            i.putExtra(TasksDbAdapter.KEY_ROWID, mRowId);
            Calendar c = Calendar.getInstance();
            Date d = c.getTime();               
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String now = sdf.format(d);
            i.putExtra("date", now);

            startActivityForResult(i, ACTIVITY_EDIT_TIME);
        }

和在C,我的setResult通过

and in C, I setResult by

confirmBtn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent();
            intent.putExtra("date", resultDate);

            int h = timePicker.getCurrentHour();
            int m = timePicker.getCurrentMinute();
            String time = "" +h+":"+m;
            Log.d(TAG, time);
            intent.putExtra("time", time);

            setResult(RESULT_OK, intent);
            finish();
        }
    });

然后B I由

protected void onActivityResult(int requestCode, int resultCode,
        Intent intent) {
    Log.d(TAG, "I am in " + requestCode + resultCode);
    super.onActivityResult(requestCode, resultCode, intent);
    if (requestCode == ACTIVITY_EDIT_TIME) {
        if (resultCode == RESULT_OK) {
            Log.d(TAG, "OK time set");
            String[] dateArr = intent.getStringExtra("date").split("-");
            String[] timeArr = intent.getStringExtra("time").split(":");
            int year = Integer.parseInt(dateArr[0]);
            int month = Integer.parseInt(dateArr[1]);
            int day = Integer.parseInt(dateArr[2]);
            int hour = Integer.parseInt(timeArr[0]);
            int minute = Integer.parseInt(timeArr[1]);
            Log.d(TAG, ""+year+month+day+hour+minute);              
        }
    }
}

但我从来没有得到Log.d(TAG,+年+月+日+小时+分钟);正常运行。

But I never get the "Log.d(TAG, ""+year+month+day+hour+minute);" run normally.

我曾尝试:结果
1:

I have tried:
1:

if (getParent() == null) {
                setResult(Activity.RESULT_OK, intent);
            }
            else {
                getParent().setResult(Activity.RESULT_OK, intent);
            }

不工作:(结果
2:

not work :(
2:

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

错误了java.lang.RuntimeException没有出现,但请求code和结果code是0始终。

the error "java.lang.RuntimeException" not occur, but the requestCode and resultCode is 0 always.

感谢您的任何暗示。

vancexu

推荐答案

在C I putExtra 2串(resultDate和时间),但我很怀念,当它被付诸意图resultDate可能不被初始化的地步。所以我得到了错误:显示java.lang.NullPointerException

In C I putExtra 2 string (resultDate and time), but I miss the point that resultDate may not be initialized when it is be put into intent. So I got the Error: java.lang.NullPointerException.

这篇关于安卓:失败交付结果ResultInfo的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆