0

我有三个活动,ActivityA、ActivityB 和 ActivityC。

就像今天的代码一样,ActivityA 将使用 startActivityForResult() 启动 ActivityB,并将接收来自 ActivityB 的返回码。没问题。

我有另一个 Android 活动 ActivityC,它表示为 ActivityA 生成返回码的另一种方法。

我的问题是这样的:

ActivityB 是否有可能以这样的方式创建 ActivityC,即当 ActivityC 返回时调用 ActivityA 中的 onActivityResult() 方法?

我之所以问,是因为我记得一年前在某个 Android 项目中这样做过,但是我不记得是哪一个,而且 Google 没有给我任何答案。

4

1 回答 1

1

我创建了 3 个活动。活动 A 为结果启动了活动 B,而活动 B 则简单地启动了活动 C 并在自身上调用了 finish()。活动 C 启动后,将结果设置为 A 想要的任何内容,并在 self 上调用完成。活动 A 中的 onActivityResult 被调用,所以我相信答案是肯定的,可以做到。

这是我的示例活动 活动 A:

public class MainTestActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_test);

        new Timer().schedule(new TimerTask() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                Intent in = new Intent(MainTestActivity.this, TestActivityB.class);
                startActivityForResult(in, 101);
            }
        }, 2000);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main_test, menu);
        return true;
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        Toast.makeText(this, "Got Intent", Toast.LENGTH_SHORT).show();
    }

}

活动 B:

public class TestActivityB extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_test);

        new Timer().schedule(new TimerTask() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                Intent in = new Intent(TestActivityB.this, TestActivityC.class);
                startActivity(in);
                finish();
            }
        }, 2000);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main_test, menu);
        return true;
    }

}

活动 C:

public class TestActivityC extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_test);

        new Timer().schedule(new TimerTask() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                setResult(101);
                finish();
            }
        }, 2000);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main_test, menu);
        return true;
    }

}
于 2013-07-11T21:54:05.510 回答