子活动调用finish之后,不会调用onActivityResult

问题描述

| 尽管有关此主题有几个问题,但我找不到正确的答案。 我有一个主要活动(这是选项卡视图中的一个活动),在该活动中我称为登录活动。
    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 ..有什么问题吗?     

解决方法

        我认为您的问题现在已经解决。我对您的代码进行了一些修改,现在调用了onActivityResult(检查修改后的代码:http://www.4shared.com/file/_VR3zi28/CopySampleApptar.html?): 1.-当您调用Login活动类时,请使用:getParent()。startActivityForResult(myIntent,1001); 我对Android并不是很熟练,但是我知道控制活动之间流程的一个是ActivityGroup类,因此您应该使用ActivityGroup实例启动活动。在上一行中,getParent()引用了ActivityGroup。 2-因为使用了ActivityGroup实例,所以onActivityResult也必须放在该类中。     ,        考虑更换线
        Intent Ireturn = new Intent();
        setResult(RESULT_OK,Ireturn);
setResult(RESULT_OK,getIntent());    
getIntent()返回启动Login的Activity。