2016-11-04 7 views
0

Androidアプリを開発しています。私のアプリでは、通知がクリックされたときにアクティビティを開いています。Androidのアクティビティライフサイクルで通知からアクティビティを開くと、

2活動私がしている - MainActivityとSecondActivity

主な活動は、SecondActivityにOnBackPressed SecondActivity

を開くことができ、MainActivityは、それがSecondActivityを開き、活動バックが表示されます。 MainActivityのOnBackPressedでは、アプリケーションは終了します。これは、最初に起動されるデフォルトのアクティビティアプリケーションです。今私はサービスの中からSecondActivityを開いているので問題があります。

これは、問題は、私はサービスとSecondActivityのOnBackPressed、アプリケーションが終了から開いたときにということで、私はサービスからSecondActivityを開く方法

private void showTrollPostNotification(String message) 
    { 
     notification = new NotificationCompat.Builder(getApplicationContext()); 
     notification.setAutoCancel(true); 
     notification.setSmallIcon(R.mipmap.ic_launcher); 
     notification.setWhen(System.currentTimeMillis()); 
     notification.setTicker(message); 
     notification.setContentTitle(getApplication().getResources().getString(R.string.app_name)); 
     notification.setContentTitle(message); 

     Intent i = new Intent(getApplicationContext(), SecondActivity.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),0,i,PendingIntent.FLAG_UPDATE_CURRENT); 
     notification.setContentIntent(pendingIntent); 
     NotificationManager nm = (NotificationManager)getApplicationContext().getSystemService(getApplicationContext().NOTIFICATION_SERVICE); 
     nm.notify(1,notification.build()); 
    } 

です。私がやりたいことは、SecondActivityの中に戻るボタンを押したときにMainActivityをいつも開きたいということです。だから私が試みたのは、SecondActivityのonBackPressedをオーバーライドすることです。私はonBackPressedでMainActivityを開始します。しかし、問題は、通知からSecondActivityを開いた後、[戻る]ボタンを押すと、MainActivityが開きます。

しかし、戻るボタンを押すと、SecondActivityが開きます。 MainActivityをSecondActivityのOnBackPressedで常に開くようにするには、今のようなアクティビティサイクルの問題を起こさずに何ができるのですか?

これは、これは何が起こることはSecondActivityは、履歴backstackになるということですSecondActivity

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(getApplicationContext(),MainActivity.class); 
    startActivity(intent); 
} 

答えて

1

のonBackPressedさマニフェスト

でSecondActivity
<activity 
      android:noHistory="true" 
      android:label="Post Details" 
      android:name=".SecondActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.VIEW" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 

です。したがって、あなたの場合、SecondActivityはバックスタック上にある必要はありません。通常noHistory="true"はそれをしないので、あなたがこれを行う必要はありませんが、あなたはfinish()を呼び出すために試すことができます:あなたのManifest.xml

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

を編集して、このことができますフラグnoHistory="true"を達成するために。

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(this,MainActivity.class); 
    startActivity(intent); 
    finish(); 
} 
+0

次に、MainActivityを開くonBackPressedをオーバーライドしますか? –

+0

@WayYanHeinはい –

+0

マニフェストファイルに追加しました。次に、2番目のアクティビティのonBackPressedをオーバーライドします。働いていない。彼らは押したまま互いを開いたままにします。 –

関連する問題