2014-11-25 2 views
1

알림이 포함 된 앱이 있습니다. 알림을 선택한 후 "뒤로"탐색 동작을 설정하고 싶습니다. MainActivity와 GoogleFormActivity의 두 가지 활동이 있습니다. 알림은 GoogleFormActivity를 시작하고 뒤로 버튼을 MainActivity로 되돌리려합니다. 나는 아무 쓸모가 this 했어요. 여기에 내 코드입니다 :알림 후 뒤로 탐색

Manifest.xml :

<activity 
     android:name="com.ican.activities.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

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

<activity 
     android:name="com.ican.activities.GoogleFormActivity" 
     android:label="@string/title_activity_google_form" 
     android:parentActivityName="com.ican.activities.MainActivity" > 
     <!-- Parent activity meta-data to support 4.0 and lower --> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.ican.activities.MainActivity" /> 
    </activity> 

여기 내 알림이 선택되는 코드의

:

Intent resultIntent = new Intent(this, GoogleFormActivity.class); 

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this). 
      addParentStack(GoogleFormActivity.class). 
      addNextIntent(resultIntent); 
    PendingIntent resultPendingIntent = 
      stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
    mBuilder.setContentIntent(resultPendingIntent); 

    NotificationManager mNotificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
    // mId allows you to update the notification later on. 
    int mId = 1; 
    mNotificationManager.notify(mId, mBuilder.build()); 

은 내가 말할 수있는 지금까지로는, 이것은 Android 문서와 정확히 같습니다. 하지만 GoogleFormActivity가 시작된 후 다시 누르면 앱에서 앱을 홈 화면으로 탐색합니다. 나는 무슨 일이 일어나고 있는지 이해하지 못한다. 어떤 아이디어?

편집 나는 사과해야합니다. 어제 작동하지 않았던 동일한 코드가 현재 작동합니다. 나는 안드로이드 스튜디오와 뭔가 맹세한다. 이런 일이 두 번째 또는 세 번째입니다.

답변

0

back button을 누르면 현재 활동이 닫힙니다. 그것은 어떤 활동도하지 않을 것임을 의미합니다. 현재 액티비티를 닫습니다. 액티비티는 stack (the back stack)에 각 액티비티가 열린 순서대로 정렬됩니다. 사용자가 Back button을 누르면 현재 활동이 스택에서 팝되어 없어집니다. 스택에 이전 활동이 재개됩니다 (스택에 해당 활동이있는 경우). 활동이 파괴되면 시스템은 활동의 상태를 유지하지 않습니다. 알림에서 오는 경우 하나의 활동 만 열립니다. 그것은 주된 활동으로 돌아 가지 않을 것입니다, 그것은 열리지 않았습니다. 특정 활동으로 이동하려면 Intent을 사용해야합니다.

+0

을이를 추가합니다. "활동 시작시 네비게이션 보존"기사에서는 MainActivity로 돌아갈 수 있어야한다고 말합니다. – mhlandry

+0

액티비티는 각 액티비티가 열린 순서대로'스택 (백 스택)'에 배열됩니다. 사용자가 '뒤로 버튼'을 누르면 현재 활동이 스택에서 팝되어 파기됩니다. 스택에 이전 활동이 재개됩니다. 스택에 해당 활동이 포함되어 있으면 .....이 내용을 읽으십시오. 아직 알려지지 않았습니다. –

+0

당신이하는 말을 이해합니다. 그러나 "활동 시작시 탐색 보류"를 보면 다음과 같은 메시지가 나타납니다. "Gmail 앱의 알림에서이를 입증합니다. 하나의 이메일 메시지에 대한 알림을 클릭하면 메시지 자체가 표시됩니다. 뒤로를 터치하면 뒤로 Gmail을 홈 화면에서 알림으로 입력하지 않고 홈 화면에서 입력 한 것처럼 홈 화면으로 이동하십시오. " 그리고 제가하려고하는 것을 성취 할 수 있어야합니다. – mhlandry

0
@Override 
     public void onBackPressed() { 
      // TODO Auto-generated method stub 
      super.onBackPressed(); 
      Intent intent=new Intent(this,MainActivity.class); 
      startActivity(intent); 
      finish(); 
     } 

docs은 GoogleFormActivity에서이 작업을 수행하는

0

시도, 나는 당신이 무슨 말을하는지 이해하지 못하는 것 같아요

getFragmentManager().popBackStack(); 
fm.beginTransaction().add(R.id.main, newFragment).addToBackStack("fragBack").commit();