0

ActivityA、ActivityB、ActivityC の 3 つのアクティビティがあります。

コードは今日のものであるため、ActivityA は startActivityForResult() を使用して ActivityB を開始し、ActivityB からリターン コードを受け取ります。問題ない。

ActivityA の戻りコードを生成する別の方法を表す別の Android アクティビティ ActivityC があります。

私の質問はこれです:

ActivityB が ActivityC を返すときに ActivityA の onActivityResult() メソッドが呼び出されるような方法で ActivityC を作成することは可能ですか?

1年前にAndroidプロジェクトでこれを行ったことを思い出したので質問していますが、どのプロジェクトを思い出せず、Googleから回答が得られませんでした。

4

1 に答える 1

1

3 つのアクティビティを作成しました。アクティビティ A は結果のためにアクティビティ B を開始し、次にアクティビティ B は単にアクティビティ C を開始し、finish() を呼び出しました。起動後のアクティビティ C で、結果を A が必要とするものに設定し、自分自身で終了と呼びます。アクティビティ A の onActivityResult が呼び出されたので、答えは YES だと思います。実行できます。

これが私のサンプル活動 です。 活動 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 に答える