返回键直接退出应用,而非退回上一个Activity的方法。
2013-04-27 13:43
351 查看
自己总结了两种方法:
大致情况:这里有2个界面,第一个界面有个按钮,点击进入第二个界面。在第二个界面点击返回键。
1.思路:第二个Activity返回时会调用第一个Activity(上级Activity)的OnRestart()方法,我们在OnRestart()方法中结束本Activity。
(布局文件我就不贴了)
First.java
2.思路:在点击第一个界面的按钮的同时就销毁FirstActivity
Frist.java
Next.java
Next.java
大致情况:这里有2个界面,第一个界面有个按钮,点击进入第二个界面。在第二个界面点击返回键。
1.思路:第二个Activity返回时会调用第一个Activity(上级Activity)的OnRestart()方法,我们在OnRestart()方法中结束本Activity。
(布局文件我就不贴了)
First.java
package a.com; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class First extends Activity { Button a; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first); a = (Button)findViewById(R.id.a); a.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Intent intent= new Intent(First.this,Next.class); startActivity(intent); //First.this.finish(); // onBackPressed (); } }); } @Override public void onBackPressed() { // TODO Auto-generated method stub super.onBackPressed(); } //关键代码 @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); System.out.println("OnRestart()被调用了"); //onBackPressed(); // super.finish(); First.this.finish();//结束本Activity } //提示框 protected void dialog() { AlertDialog.Builder builder = new Builder(First.this); builder.setMessage("确定要退出吗?"); builder.setTitle("提示"); builder.setPositiveButton("确认", new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); First.this.finish(); //onBackPressed (); } }); builder.setNegativeButton("取消", new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } //返回键 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { dialog(); return false; } return false; } }
2.思路:在点击第一个界面的按钮的同时就销毁FirstActivity
Frist.java
package a.com; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class First extends Activity { Button a; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first); a = (Button)findViewById(R.id.a); a.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Intent intent= new Intent(First.this,Next.class); startActivity(intent); First.this.finish();关键点,结束了本Activity。 // onBackPressed ();也可以结束Activity } }); } @Override public void onBackPressed() { // TODO Auto-generated method stub super.onBackPressed(); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); System.out.println("OnRestart()被调用了"); //onBackPressed(); // super.finish(); First.this.finish(); } //提示框 protected void dialog() { AlertDialog.Builder builder = new Builder(First.this); builder.setMessage("确定要退出吗?"); builder.setTitle("提示"); builder.setPositiveButton("确认", new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); First.this.finish(); //onBackPressed (); } }); builder.setNegativeButton("取消", new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } //返回键 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { dialog(); return false; } return false; } }
Next.java
package a.com; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Next extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.next); } //提示框 protected void dialog() { AlertDialog.Builder builder = new Builder(Next.this); builder.setMessage("确定要退出吗?"); builder.setTitle("提示"); builder.setPositiveButton("确认", new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); First.this.finish(); //结束本Activity onBackPressed ();//也可以结束Activity,详情见官网。 } }); builder.setNegativeButton("取消", new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } //返回键 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { dialog(); return false; } return false; } }
Next.java
package a.com; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Next extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.next); } //提示框 protected void dialog() { AlertDialog.Builder builder = new Builder(Next.this); builder.setMessage("确定要退出吗?"); builder.setTitle("提示"); builder.setPositiveButton("确认", new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); // First.this.finish(); onBackPressed (); } }); builder.setNegativeButton("取消", new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } //返回键 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { dialog(); return false; } return false; } }
相关文章推荐
- 修改密码后退回到登录界面,再按返回键退出应用,关闭所有的Activity
- [Activity]直接退出应用的方法
- Android与Unity交互调用mUnityPlayer.quit()方法退出返回上一个Activity界面
- Android完全退出程序,不是返回到上一个Activity
- 点击两次手机的返回键应用退出的思路与方法---android开发
- 笔记:安卓完全退出应用程序出现闪退、返回上一个activity的问题
- 四种方法启动一个应用(activity)
- linux 不回车直接读取一个字符的方法(termios结构的描述了终端的模式,在这段代码中我们改变了它,使得终端能够接收到键盘输入马上返回。)
- android 点击通知栏返回应用 ,非启动一个新Activity
- 一个面试题引发的思考:Android应用退出时候,关闭所有的Activity
- Android应用开发多个activity完全退出程序方法
- Android双击返回键退出Activity的两种方法【转】
- 如何打开多个界面之后按返回键直接退出应用
- 1.写student类中的select,delete,update,insert方法并在objectDataSource中应用(分别写两个,一个返回datatable,一个使用list)
- 写student类中的select,delete,update,insert方法并在objectDataSource中应用(分别写两个,一个返回datatable,一个使用list)
- TabHost 两种使用方法 直接让一个Activity 继承TabActivity 和 利用findViwById()方法取得TagHost组件
- 写student类中的select,delete,update,insert方法并在objectDataSource中应用(分别写两个,一个返回datatable,一个使用list)
- 关于调用startActivityForResult()方法后Activity直接退出的问题原因和解决办法
- Android中返回数据到前一个Activity — startActivityForResult方法
- android中重写返回按钮退出应用的几种情况和方法