2016-03-23 11 views
0

こんにちは私はAndriodにはかなり新しいです。私は3つのアクティビティA B Cを持っています。AはメインアクティビティBであり、Cは独立アクティビティです。私はmainActivityにカレンダーを含め、いくつかの日付を強調表示しています。 新しいインスタンスを開始せずにMainActivityに戻る

は今mainActivityを通じて、私は新しい活動のBを起動して、次のコード

public void OnClick(View V){ 
     Intent i= new Intent(getApplicationContext(),A.class); 
     i.setFlags(Imtent.FLAG_ACTVITIY_CLEAR_TOP); 
     startActivity(i);  
    } 

これはmainActivityに戻るが、ハイライトされた日付が存在しないを使用してに戻り。私は新鮮な新しい活動を創り出すか、私が日を強調するのに何か間違ったことをしたかどうかを知りたい。

+0

ボタンを押して戻ったときにどうなりますか? MainActivityが開始アクティビティの場合、アプリは終了する必要があります。 – jaibatrik

+0

1.戻るまたはホームボタンを使用するだけで、MainActivityに戻ることができます。 2.活動のlaunchModeについての研究。 –

+0

mainActivityを再度開始しないで、BackStackをチェックしてください。 http://developer.android.com/guide/components/tasks-and-back-stack.html – Manu

答えて

2

あなたはMainActivityにあなたのマニフェストに次の行を使用する必要があります。たとえば

... 
android:launchMode="singleTask" 
... 

を:

 <activity 
      android:name=".activities.MainActivity" 
      android:label="@string/app_name" 
      android:launchMode="singleTask" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
+0

これは必要ありません。 this.finish()を呼び出すことができます –

+0

場合によっては、this.finish()は良い解決策ではありません。たとえば、バックスタック履歴が必要な場合などです。彼がアクティビティCにいて、アクティビティAに行く、またはアクティビティBをアクティビティを再作成せずに戻す条件がある場合、アクティビティBが終了した場合、これは不可能です。 –

+0

完全に同意しますが、現時点では彼はそれを要求していないようです。私は間違っているかもしれませんが、それは私が質問を理解する方法です –

2

前のアクティビティをもう一度開始する必要はありません。現在のアクティビティを閉じて前のアクティビティに戻る場合は、いつでもthis.finish()に電話をかけることができます。これがBackStackの最後のアクティビティであれば、アプリは終了します。

関連する問題