2016-10-27 183 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();