2016-09-09 2 views
0

Я работаю над приложением, на котором вы можете обмениваться изображениями с помощью приложения галереи своего локального телефона. Всякий раз, когда фотография делится через приложение галереи, в моем приложении открывается ActivityA.Условно-понятная активность backstack

Совместное фото следует несколько шагов, в котором она идет от Activity A к Activity B и заключительный шаг в B открывает Main Activity.

Что я хочу, нажимая назад от B следует открыть A. Нажатие последней кнопки в B должно очистить как A, так и B с задней стороны, так что если вы нажмете на Main Activity, приложение должно закрыть.

Что я сделал:

  1. Первоначально я открывал Main Activity с этим флагом intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); Но это началось новое задание, и поэтому даже когда я использовал, чтобы закрыть мое приложение и перейти в галерею приложение телефона , он будет показывать A вместо фотографии в этом приложении, когда вы нажимаете назад, тогда вы можете увидеть фактическое изображение в этом приложении галереи.

  2. Я указанный android:noHistory="true" для A и B и начал Намерение Main Activity без нового флага задачи. Это решило новую задачу задачи в том смысле, что когда я закрываю приложение и переключился обратно в приложение галереи, он показал фактическое изображение, а не мою активность A. Но проблема здесь в том, что я не могу вернуться к A с B, также, если приложение сведено к минимуму, то и активность исчезла.

+0

call finish() когда ваш звонок другой вид деятельности. – Harshad07

ответ

1

Создать одноэлементный класс:

Stack<Activity> stack; 

public void add(Activity activity){ 
    stack.add(activity). 
} 

public void remove(){ 
    Activity activity = stack.lastElement(); 
    if(activity != null) { 
     stack.remove(activity). 
     activity.finish(); 
    } 
} 

public void removeAll() { 
    for (Activity activity : stack) { 
     if (activity != null) 
     activity.finish(); 
    } 
    stack.clear(); 
} 


вызов Add() в вашей деятельности OnCreate()
вызов удалить завершит текущую деятельность
вызов RemoveAll завершит все мероприятия добавляется в стек

+0

не понимаю. вы могли бы поделиться фрагментом, объясняющим это? –

+0

@AmitTiwari Я отредактировал свой ответ –

0
Intent l = new Intent(getApplicationContext(), MainActivity.class); 
         l.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
         l.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         l.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
         finish(); 
         startActivity(l); 

использовать это на финише в автомобиле B.

+0

Этот код работает для случая возврата к 'A' из' B'. Но после последней кнопки в 'B', когда я перехожу в« Основная деятельность »и закрываю приложение, приложение галереи телефона по-прежнему показывает« A ». –