3

初歩的な質問かもしれませんが、疑問があります。私はたくさんグーグルで検索しましたが、何も見つかりませんでした。結果のアクティビティを開始する際にリクエスト コードを渡し、結果に対して同じリクエスト コードと結果コードでチェックします。知りたい リクエスト コードを使用して、さまざまなタスクを実行し、呼び出されたアクティビティからさまざまな結果を取得する実装方法はありますか。つまり、同じアクティビティがさまざまなリクエスト コードで何度も呼び出された場合、別の結果が返されます。その方法を教えてください。これを行うには、switch ステートメントやその他の方法を使用する方法が見つかりませんでした。

私はすでに答えを知っているので、これを編集します。次のようなシナリオを使用できるかどうか知りたいです。

Intent intent = new Intent(this, yourClass.class); 
intent.putExtras(b);
if(condition1)
startActivityForResult(intent, 1);
else
startActivityForResult(intent, 2);

そして、呼び出されたアクティビティは、リクエスト コード 1 と 2 に対して 2 つの異なる結果を返すので、

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    //could replace it with a switch
    if (requestCode == 1){
        //condition 1
            }
        else if(requestCode == 2){
          //condition2
        }
}

つまり、異なる要求コードで同じアクティビティを呼び出して、同じアクティビティから異なる結果を取得します。

ありがとう

4

3 に答える 3

2

投稿された質問は私にはあまり明確ではありませんでした。いつでも activityForResult を切り替えて、さまざまなリクエスト コードをチェックする onActivityResult メソッドでアクティビティの結果をチェックできます。これはコードのデモンストレーションです。その方法は次のとおりです。

これを使用してアクティビティを切り替えます。

Intent intent = new Intent(this, yourClass.class); 
intent.putExtras(b);    // here
startActivityForResult(intent, 2); //put your code along : positive integer

このメソッドで結果を確認する

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    //could replace it with a switch
    if (requestCode == 1){
        //put your code here
            }
}

呼び出されたアクティビティはリクエストコードを知る必要はありませんが、そのようなことをしたい場合は、次のように意図的にリクエストコードを渡すことでそれを行うことができます:

intent.putExtra("requestCode", requestCode); 

したがって、切り替えたアクティビティ クラスのインテント変数にアクセスします。

于 2012-08-08T08:08:35.690 に答える
0

何をしたいのかよくわかりませんが、最初のアクティビティに必要なコードを返すことができるということはわかっています。
たとえば、アクティビティ A があり、startActivityForResult()アクティビティ B への呼び出しがあり、B が作成されたものを実行し、7、8、9 など、必要なものを返す a を返すとしresultCodeますresultCode。 .
次に、アクティビティに特定のことをさせたい場合は、カスタム requestCode で開始することもできます。そのため、 onActivityResult() が呼び出されたときに、アクティビティが必要なものを返すかどうかを確認できます。

これを行うには、次のような静的整数値を使用することをお勧めしRESULT_1ますRESULT_2...

onActivityResult()注:最初のアクティビティから呼び出したい場合は、正の値を返す必要があります。次に、スイッチを使用して異なるresultCode値を処理します。

于 2012-08-08T08:01:57.643 に答える
0
 @Override
public void onClick(View view) {
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(cameraIntent, 1888);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if( requestCode == 1888 ) {

    }
}

また

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode)
        case ACTIVITY1:
           if(resultCode == RESULT_OK)
              Toast.makeText(getApplicationContext(), "Activity 1 returned OK", Toast.LENGTH_LONG).show();
           break;
        case ACTIVITY2:
           if(resultCode == RESULT_OK)
              Toast.makeText(getApplicationContext(), "Activity 2 returned OK", Toast.LENGTH_LONG).show();
           break;
}
于 2012-08-08T07:59:59.277 に答える