startActivityForResult和替换子活动

时间:2013-07-11 20:32:23

标签: java android

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

由于代码是今天,ActivityA将使用startActivityForResult()启动ActivityB,并将从ActivityB接收返回代码。没问题。

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

我的问题是:

ActivityB是否可以创建ActivityC,以便在ActivityC返回ActivityA中的onActivityResult()方法时调用?

我在问,因为我记得一年前在一些Android项目中这样做,但是我不记得哪一个,谷歌没有给我任何答案。

1 个答案:

答案 0 :(得分:1)

我创建了3个活动。活动A为结果启动活动B,反过来活动B只启动活动C并在自己上调用finish()。启动后的活动C,将结果设置为任何想要在自己身上调用完成的n。调用活动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;
    }

}