子活动调用finish()后未调用onActivityResult

时间:2011-06-14 13:15:27

标签: android android-activity activity-finish

虽然关于这个主题有几个问题,但我找不到合适的答案。

我有一个主要活动(这是tabview中的一个活动),我从那里调用登录活动。

    Button chdbtn=(Button)findViewById(R.id.Add);
    chdbtn.setOnClickListener(new OnClickListener() {   
        @Override
        public void onClick(View v) {
        Intent myIntent = new Intent(main.this, Login.class);
            startActivityForResult(myIntent, 1001);
    }
    }); 


protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if(requestCode == 1001)
        {
            if(resultCode == RESULT_OK)
            {
                          Log.i("Info","Inside");
            }
        }
}

在我的登录课程中,当我点击一个按钮时,我正在做这个

    Button chdbtn=(Button)findViewById(R.id.Addchild); 
    chdbtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
                Intent Ireturn = new Intent();
                setResult(RESULT_OK,Ireturn);
                finish();
        }
    });

但是当我点击登录活动中的按钮时,控件不会进入主要活动onActivityResult方法。任何人都可以指导我是什么问题。


VIJAYapp.sample.ChildEntry1 $ 1 /的onClick:23

INFO / ActivityManager(59):开始活动:意图{cmp = app.sample / .ChildLogin}

WARN / ActivityManager(59):从非活动上下文调用的startActivity;强制Intent.FLAG_ACTIVITY_NEW_TASK:Intent {cmp = app.sample / .ChildLogin}

DEBUG / PhoneWindow(999):无法保存哪个视图具有焦点,因为焦点视图com.android.internal.policy.impl.PhoneWindow$DecorView@43e4b620没有ID。

INFO / ActivityManager(59):显示的活动app.sample / .ChildLogin:460毫秒(总计460毫秒)

INFO / VIJAY(999):VIJAYapp.sample.ChildLogin $ 1 / onClick:24


上面是我点击按钮时得到的日志。我可以看到Activity有什么问题。有什么答案吗?

2 个答案:

答案 0 :(得分:1)

我认为你的问题现在已经解决了。我对您的代码进行了一些修改,现在调用onActivityResult(检查修改后的代码:http://www.4shared.com/file/_VR3zi28/CopySampleApptar.html?):

1.-当你调用Login活动类时,使用:getParent()。startActivityForResult(myIntent,1001);

我不熟悉Android,但我知道控制活动之间的流程的是ActivityGroup类,因此您应该使用ActivityGroup实例启动活动。在上一行中,getParent()引用了ActivityGroup。

2. - 因为您使用ActivityGroup实例,所以您的onActivityResult也必须放在该类中。

答案 1 :(得分:0)

考虑更换行

        Intent Ireturn = new Intent();
        setResult(RESULT_OK,Ireturn);

setResult(RESULT_OK,getIntent());    

getIntent()返回启动Login的活动。