質問

私は呼び出します getParent().setResult(0)TabActivity. 。これは、ユーザーが前のボタンにヒットしたときに呼び出されます。現在のアクティビティを閉じて、スタックから削除したいと考えています。

getParent()nullを返します。なぜそれが起こるのか誰かが私に言うことができますか?

getParent().setResult(0);
finish();

ありがとう

アップデート: これは、getParent()の定義です...埋め込まれた子供はどういう意味ですか。第二に、別のアクティビティから呼び出された場合、タバアクティブ性は埋め込まれた子供ですか?

public final Activity getParent ()
Return the parent activity if this view is an embedded child.
役に立ちましたか?

解決

あなたはあなたが質問を明確に述べていません。結果をアクティビティから呼び出したアクティビティに渡す方法を理解したいと思います。アクティビティはバックスタックに保管されていても、アクティビティが階層的ではないことを最初に理解する必要があります。後の活動はそうではありません 属する 彼らが呼ばれる活動に。

しかし、ここにあなたが尋ねることを意図した質問の答えがあります:

あなたは使用しています startActivityForResult(Intent, int) (これを読むことができます ここ)

いつ Activity A 電話 startActivityForResult() 方法 Activity B 開始すると、これは必要な処理をすべて実行する必要があります。

setResult(RESULT_OK)

yes/noが必要な場合または

setResult(RESULT_OK, intent)

意図はあります Intent 使用するバンドルされた情報が含まれています Activity A 行動するために。後 Activity B 出口 Activity A 再開してメソッドを呼び出します:

 protected void onActivityResult(int requestCode, int resultCode, Intent data)

これが結果を処理する場所です。

ここでこれについてすべて読むことができます:

http://developer.android.com/reference/android/app/activity.html#startingactivities

他のヒント

このアクティビティを歴史スタックに維持したくない場合は、次のいずれかを実行します。

a)親のタバクティティを開始するときは、flag:flag_activity_no_historyを追加します

Intent intent = new Intent(this, TabActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivityForResult(intent, requestCode);

b)またはAndroidを追加:nohistory = "true" in the activeのマニフェスト

    <activity
        android:name=".TabActivity"
        android:noHistory="true"
        ...
        >
        ...
    </activity>

次に、結果を親に戻し、タバクティティを完了するために

Intent result = new Intent();
result.putExtra("somevalue", requestCode);
setResult(Activity.RESULT_OK, result); // or setResult(Activity.RESULT_CANCELED, result);
finish();

あなたが完了したとき();タバアクティビティアクティビティそれは記憶されません

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top