2016-10-27 138 views
0

至今爲止。我在Android Studio上創建了一個簡單的測驗應用程序。一切工作正常,包括當我從FirstActivity.java轉到下一個活動(名爲SecondActivity.java)時,並且按下按鈕時,用finish()關閉第一個活動,如下面的代碼所示:Android Studio後退按鈕問題

public void onClick() { 

    button_next = (Button)findViewById(R.id.nextbtn); 


      button_next.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        startActivity(new Intent(FirstActivity.this, SecondActivity.class)); 
        finish(); 


       } 
      }); 

該代碼很好但是當我試圖從第二個活動轉到第一個活動(關閉第二個活動並返回到第一個活動)時,finish()和onBackPressed()都不起作用,它只是完全關閉應用程序,只要按下按鈕,我需要什麼代碼,關閉SecondActivity.class並轉到FirstActivity.class?

+0

不要叫完,然後 –

+0

'完成();'你期望這樣做? – njzk2

+0

對不起。我只是使用finish();所以應用程序不消耗內存。因爲我希望我的應用至少有20-30個問題並保持性能 –

回答

0

如果您想回到之前的活動,請在更改活動後不要完成活動。

public void onClick() { 
    button_next = (Button) findViewById(R.id.nextbtn); 
    button_next.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(FirstActivity.this, SecondActivity.class)); 
     } 
    }); 
} 
+0

這不是我說的,我在說的是關閉FirstActivity並啓動SecondActivity,這很好。但我想要的是關閉SecondActivity並返回到FirstActivity –

+0

是的,我知道,但是您在第一個活動中完成了,所以在您轉到第二個活動後它會被銷燬。如果你想從第二個回到第一個按回按鈕然後不要銷燬第一個活動。 –

+0

如果活動太多,我該如何讓應用程序順利運行?我希望我的應用至少有20-30個問題 –

0

如果你有這麼多的活動,還有另一種方式來處理活動的生命週期:

public class MyActivityManager { 
    private static MyActivityManager instance; 
    private Stack<Activity> activityStack;//activity's stack 
    private MyActivityManager() { 
    } 
    //singleton 
    public static MyActivityManager getInstance() { 
     if (instance == null) { 
      instance = new MyActivityManager(); 
     } 
     return instance; 
    } 
    //push an activity to stack 
    public void pushOneActivity(Activity actvity) { 
     if (activityStack == null) { 
      activityStack = new Stack<Activity>(); 
     } 
     activityStack.add(actvity); 
    } 
    //get last activity,fifo 
    public Activity getLastActivity() { 
     return activityStack.lastElement(); 
    } 
    //remove an activity 
    public void popOneActivity(Activity activity) { 
     if (activityStack != null && activityStack.size() > 0) { 
      if (activity != null) { 
       activity.finish(); 
       activityStack.remove(activity); 
       activity = null; 
      } 
     } 
    } 
    //finish all activity 
    public void finishAllActivity() { 
     if (activityStack != null) { 
      while (activityStack.size() > 0) { 
       Activity activity = getLastActivity(); 
       if (activity == null) break; 
       popOneActivity(activity); 
      } 
     } 
    } 
} 

在FirstActivity,你應在SecondActivity添加

MyActivityManager.getInstance().pushOneActivity(FirstActivity.this);

,你想要去FirstActivity或其他活動:

startActivity(new Intent(FirstActivity.this, SecondActivity.class)); 
MyActivityManager.getInstance().finishAllActivity(); 
finish();