0

どの子アクティビティ (親から開始) が結果を返すかを識別する方法として、リクエスト コードをパラメーターとして追加すると思います。

しかし、私は (間違っているかもしれませんが) どの時点でも、アプリで利用できるアクティビティは 1 つだけだと思います...そうですか?.

では、なぜこの 2 番目のパラメーターが必要なのでしょうか?

4

4 に答える 4

3

開いている多くのアクティビティを閉じたい場合は、通常「startActivityForResult(Intent,Requestcode)」を使用します。例:

startActivityForResult(myIntent,0);

finish() を呼び出すと、現在のアクティビティのみが閉じられ、最後に開いたアクティビティが表示されます アクティビティ A を開き、A から B を開き、次に C を開き、次に D を開き、インターネット接続エラーで C を閉じる必要があるとしますおよび D を実行し、アクティビティ B に戻ります。u は結果を設定します。

setResult(100);

閉じたいアクティビティ (ここでは C の例) に次を追加します。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode==100){
        setResult(100);
        finish();
    }
};

そのため、IOException をキャッチすると、結果を 100 に設定してアクティビティを終了するだけです。

それがあなたを助けることを願っています:)

于 2013-09-27T07:05:46.713 に答える
1

アクティビティ A があります。そこからリクエスト コードb1でアクティビティ B を呼び出します。または、別のリクエスト コード c1 でアクティビティ C を呼び出します。したがって、B または C から戻ると、リクエスト コードによってどちらからかがわかります。

B で何かを行い、A に戻ります。B で行ったことが「キャンセル」であると判断し、それをマークして、結果コードを CANCEL に設定することがあります。また、自分が行ったことは一種の「OK を押す」ものであると判断し、結果コード OK でマークする場合もあります。次に、A に戻り、それらの結果に基づいて必要なことを行います。

アクティビティ B と C の両方を同じリクエスト コードで呼び出すことができますが、どちらから A に戻ったかを区別することはできません。

于 2013-09-27T07:03:55.753 に答える
1

Android開発者の基本で述べたように:

為に-public void startActivityForResult (Intent intent, int requestCode)

整数の引数は、リクエストを識別する「リクエスト コード」です。結果のインテントを受け取ると、アプリが結果を適切に識別して処理方法を決定できるように、コールバックは同じ要求コードを提供します。

そして例-

ユーザーが連絡先を選択できるアクティビティを開始してから、次のようなリクエスト コードを使用します。

static final int PICK_CONTACT_REQUEST = 1;  // The request code
...
private void pickContact() {
    Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
    pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers
    startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
}

したがって、呼び出されたアクティビティが結果を呼び出し元のアクティビティに返すと、呼び出し元のアクティビティは、呼び出されたアクティビティから受け取る要求コードによって結果を識別します。

于 2013-09-27T07:05:43.667 に答える