2015-08-19 6 views
1

Я создал приложение для Android, который имеет два вида деятельности, один из них MainActivity, а другие является Article активностиAndroid - Закрыть первую деятельность

В этом приложении вы можете открыть неограниченное количество мероприятий. Так что это похоже на приложение для статьи, внутри статьи есть и другие статьи, чтобы вы могли следить за неограниченным количеством статей. Каждая статья открывает новую активность Article.

Теперь, что я хочу сделать, это: Когда открывается 10-й Article, я хочу закрыть первую активность Article (не MainActivity).

Я также прочитал это question, но он работает только в том случае, если у вас разные виды деятельности (например, ActivityA, ActivityB, ActivityC ...).

Есть ли способ, которым я могу это сделать?

+2

Если вы строите ваше приложение на фрагменты вместо этого вы можете просто использовать счетчик при добавлении фрагментов в задний стек и удалении старых тегов. Рассмотрите: http://stackoverflow.com/questions/22474584/remove-old-fragment-from-fragment-manager – JohanShogun

+0

Я вижу, что могу сделать это в 'fragments', но на самом деле я их не использую, я в настоящее время использую 'Activity'. – Enve

+0

Я знаю об этом, я предлагаю вам использовать фрагменты, потому что он лучше подходит для того, что вы пытаетесь сделать. Это не будет иметь никакого значения для конечного пользователя, только программно. – JohanShogun

ответ

1

При открытии 10-й статьи, сделать это:

Intent intent = new Intent(this,Your_Article.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

или если вы хотите, чтобы закрыть определенную деятельность, получить экземпляр этой деятельности и закрыть его с помощью отделки().

0

Это взлом только для того, чтобы заставить его работать, но вы можете попробовать фрагмент из своего описания;

  1. Создать новый класс ActivityHandler.java

    public class ActivityHandler { 
    private static ActivityHandler uniqueInstance; 
    private static List<Activity> mListActivity; 
    private static int SIZE_LIMIT = 10; 
    
    public static ActivityHandler getInstance() { 
        if (uniqueInstance == null) { 
         synchronized (ActivityHandler.class) { 
          if (uniqueInstance == null) { 
           uniqueInstance = new ActivityHandler(); 
          } 
         } 
        } 
        return uniqueInstance; 
    } 
    
    
    
    private Activityhandler() { 
        if (mListActivity == null) { 
         mListActivity = new ArrayList(); 
        } 
    } 
    
    
    public static void add (Activity activity){ 
        mListActivity.add(activity);   
        if (mListActivity.size() > 10){ 
         Activity firstActivity = mListActivity.remove(0); 
         firstActivity.finish();   
        } 
    } 
    } 
    

В OnCreateMethod вашей ArticleActivity в:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.article_activity); 
    ActivityHandler.getInstance().add(this); 


}