android - onActivityResult为什么不执行?
天蓬老师
天蓬老师 2017-04-17 17:29:24
0
4
502

Activity A:

int tag  = 0;
startActivityForResult(new Intent(getApplication(), LoreAddActivity.class).putExtra("tag1", tag), 100);

@Override
protected void onActivityResult(int arg0, int arg1, Intent arg2) {
    super.onActivityResult(arg0, arg1, arg2);
    if(arg1==RESULT_OK){
        switch (arg0) {
        case 100:
            tag2 = arg2.getIntExtra("tag2", 0);
            break;
        default:
            break;
        }
    }
}

Activity B:

int tag = getIntent().getIntExtra("tag1",0);

Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putInt("tag2", tag);
intent.putExtras(bundle);
setResult(RESULT_OK, intent);
finish();
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(4)
Peter_Zhu

意図に誤りがある可能性があります。 新しい Intent(XXX.this,LoreAddActivity.class) を試してください;

getApplication() は Application オブジェクトを参照しますが、
Application クラスは Context クラスを拡張するため、
アプリケーション コンテキストを提供するために使用できます。

getApplication によって返されるアプリケーション オブジェクトもコンテキストを継承するため、次のように使用できます。しかし、ソースが明示的に指定されていない場合、コールバック、つまり setResult を受信するときに、B はそのインテントがどこから来たのかわかりません。上記は私の理解であり、参照のみです。間違いがある場合は、ご指摘ください。

いいねを押す +0
巴扎黑

アクティビティ A が返される限り、onActivityResult が実行されます。ログまたはデバッグを使用して、onActivityResult が実行されなかった場所を確認できます

いいねを押す +0
PHPzhong

2 つのアクティビティに対してどの起動モードを設定しましたか?

いいねを押す +0
黄舟

リーリー

この文は getApplication を使用しています。このモードで開始されたアクティビティは、デフォルトではそれを開始したアクティビティのタスク スタックに入ります。 getApplication メソッドで取得された Context には、タスク スタックの情報が含まれません。したがって、アクティビティを開始するときに getApplication を使用せず、アクティビティのコンテキストに置き換えることをお勧めします。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート