如何将结果(startActivityForResult)从Activity返回到TabHost活动?

时间:2011-08-31 11:10:38

标签: android

我的A类调用startActivityForResult:类A是tabactivity的一个选项卡中的activitygroup

Intent intent = new Intent(this, ClassB.class);
startActivityForResult(intent, "STRING");

ClassB是一种常见的活动,不是在tabactivity中,而是单独的

Intent intent = this.getIntent();
intent.putExtra("SOMETHING", "EXTRAS");
this.setResult(RESULT_OK, intent);
finish();

但在A级onactivityResult没有收到任何东西,而不是excute.if我把classA从tabactivity,我的应用程序是好的。我读过

How to setResult() for a TabActivity which contains activity for tabs

How to return a result (startActivityForResult) from a TabHost Activity?

但是没有解决我的问题,有人可以提供一些建议,代码更好,谢谢

编辑: 在A班我添加:

public class UpdateImageBroadcastReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {

            Log.i("temp","34353");


        }
    }



    /* (non-Javadoc)
     * @see android.app.Activity#onPause()
     */
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        unregisterReceiver(updateImageBroadcastReceiver);

    }

    /* (non-Javadoc)
     * @see android.app.Activity#onResume()
     */
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();

        updateImageFilter = new IntentFilter("ACTION_CHANGE_TAB");
        updateImageBroadcastReceiver = new UpdateImageBroadcastReceiver();
        registerReceiver(updateImageBroadcastReceiver, updateImageFilter);


    }
B级

   Intent intent = new Intent("ACTION_CHANGE_TAB");
                        intent.putExtra("path", f.getAbsolutePath());
                        sendBroadcast(intent);

                    //  FileListSelectActivity.this.setResult(RESULT_OK, intent);
                        finish();

但我无法打印:Log.i(“temp”,“34353”);

3 个答案:

答案 0 :(得分:1)

不知道它是否是最好的方法,但是目前我使用的是一个我称之为内存的类来在活动之间传递对象。

public class Memory {
    public static Object objectToPass = null;
}

答案 1 :(得分:1)

尝试使用广播接收器。您可以覆盖活动B中的onStop(),从活动B广播事件并在活动A中监听。

答案 2 :(得分:1)

我没有找到完全没有源代码的问题,但它可能是下一种情况之一

1)tabhost的root活动没有收到onActivityResult。然后你应该在TabHost里面的Activity中调用override onActivityResult

2)另一种情况:tabhost内的活动没有收到onActivityResult。只有焦点活动才会收到ActivityGroup内的任何操作。您应该将焦点放在其中的某个视图中,然后您将收到操作。