【问题标题】:onActivityResult is not been invoked after the child activity calls finish()子活动调用finish()后未调用onActivityResult
【发布时间】:2011-06-14 13:15:26
【问题描述】:

虽然关于这个话题有几个问题,但我找不到正确的答案。

我有一个主要活动(这是选项卡视图中的一个活动),我从中调用登录活动。

    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):开始活动:Intent { cmp=app.sample/.ChildLogin }

WARN/ActivityManager(59): startActivity 从非 Activity 上下文中调用;强制 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 存在一些问题..有答案吗?

【问题讨论】:

  • 如果您调试并在“if(requestCode == 1001)”行设置断点,是否会受到影响?我怀疑你的 onActivityResult 被调用了,它只是没有收到你的日志消息。
  • 检查RESULT_OK的值在两个类中是否相同
  • 我已经尝试在 onActivityResult 函数的开头放置一个断点,但它从未被命中。我已将日志语句放在所有函数的开头以打印文件、函数和行号,这就是我得到的
  • 06-14 20:24:33.689: 错误/VIJAY(586): VIJAYapp.sample.ChildEntry1$1/onClick:46 06-14 20:24:50.370: 错误/VIJAY(586): VIJAYapp.sample.ChildLogin$2/onClick:49

标签: android android-activity activity-finish


【解决方案1】:

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

1.-调用登录活动类时使用:getParent().startActivityForResult(myIntent, 1001);

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

2.-因为你使用的是ActivityGroup实例,所以你的onActivityResult也必须放在那个类中。

【讨论】:

  • 你不是 silver_mx 你是 gold_mx 谢谢兄弟.. :) 和 +1
  • 该链接不可用是否可以再次发布该代码我遇到同样的问题
【解决方案2】:

考虑换行

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

setResult(RESULT_OK,getIntent());    

getIntent() 返回启动 Login 的 Activity。

【讨论】:

  • @vijay 考虑在更新代码后发布错误,并考虑在 onActivityResult 中调用 Log.d
猜你喜欢
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多