3

だから私はアクティビティAにこれを持っています:

startActivityForResult(Intent.createChooser(share, "Share using"), 0);

アクティビティ B を使用して何かを共有するためのセレクターを起動します。アクティビティ B が終了したら、アクティビティ A も終了するようにします。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    super.onActivityResult(requestCode, resultCode, intent);

    this.finish();

}

問題は、セレクターが開いているときにユーザーが戻るボタンを押すと、アクティビティ A が終了することです...これは発生したくありません。アクティビティ A で onBackPressed メソッドを上書きしようとしましたが、セレクターが開いているときは適用されないようです。私を助けてください。

更新: アクティビティ B は私の管理下になく、ユーザーが共有することを決定したものであることに言及する必要があります。

更新 2: 問題は、チューザー アクティビティと、ユーザーがチューザーから選択したアクティビティが同じアクティビティと見なされるため、ユーザーがアクティビティ B (テキストを共有するために使用されるもの) を閉じると、onActivityResult が同じ resultCode を取得し、 chooser アクティビティからのものと同じ requestCode。これを回避する方法が必要ですが、私には思いつきません。

4

2 に答える 2

1

呼び出す前に、requestCode と resultCode を返すものをテストする必要があります。

this.finish();

このようにして、ユーザーが何かを選択する前に戻るボタンを押しても、アクティビティ A は破棄されません。

于 2012-06-08T17:13:31.377 に答える
0

a )正しいアクティビティとb)正しい結果コードであることを確認する必要があります。onActivityResult は次のようになります。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    super.onActivityResult(requestCode, resultCode, intent);

    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
           this.finish();
        }
    }
} 
于 2013-08-01T17:46:55.420 に答える