2012-03-02 10 views
2

私のアプリケーションには3つのアクティビティがあります。アクティビティAはアクティビティBをコールし、アクティビティBはアクティビティCをコールします。アンドロイドの通知バーから内部アクティビティを開く

バックキーはスタックをC-> B-> Aの順にナビゲートします。

通知バーからアプリケーションを起動すると、ユーザーをCに送信したいが、前述のナビゲーションパターンを維持したい、つまり、戻るキーを押すとアクティビティBが開き、もう一度戻るキーを押すとアクティビティAが開くはずです。

だけで、すべての活動のoverride back key押す必要があり、この

+0

Android envは、この種の動作を「そのまま」そのままサポートします。何も実装する必要はありません。 – alfasin

+0

申し訳ありませんが問題は明らかではないかもしれません。アクティビティAがBを起動し、BがCを起動する通常のシナリオでは、動作することを理解しています。しかし、通知バーから通知をクリックすると、ユーザーは直接アクティビティCを取るようになりますが、アクティビティBを開くためには、バックキーを押したままにします。私がAまたはBの活動を創設または開始しなかった場合、これはどのように機能しますか? – rOrlig

+1

意図は答えです;) – noob

答えて

2

の取り扱いについては移動する方法上の任意のアイデア..曽爾の答えを拡張

onBackPressed() 
{ 
// make intent and call previous activity. 
// and finish this. 
} 
1

。あなたはPrevActivity.classキーを押すとバック​​に起動する必要Activityクラスの名前ですActivityクラス

class MyActivity extends Activity{ 
    public void onCreate(Bundle bundle){ 
     //onCreate stuff 
    } 
    public void onBackPressed(){ 
     Intent backIntent=new Intent(this,PrevActivity.class); 
     startActivity(backIntent); 
    } 
} 

に次のコードを配置する必要があります。このコードをすべてのアクティビティに配置し、以前のクラスを配置する必要があります。したがって、フローがA> B> Cの場合、アクティビティBはインテントにA.classを入れ、アクティビティCはB.classを入れなければなりません。

+0

これはうまくいきます。 FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_SINGLE_TOPなどの余分なフラグを設定して、親アクティビティのインスタンスが1つだけであることを確認してください。 – rOrlig

関連する問題