《Android 弹出窗口.pdf》由会员分享,可在线阅读,更多相关《Android 弹出窗口.pdf(7页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Android 退出程序离开与关闭程序的弹出窗口Android 程序有很多 Activity,比如说主窗口 A,调用了子窗口 B,在 B 中如何关闭整个Android 应用程序呢?这里 Android123 给大家三种比较简单的方法实现。首先要说明在 B 中直接使用 finish(),接下来手机显示的还是主窗口A,所以一起来看看Android 开发网是如何实现的吧.1.Dalvik VM 的本地方法 android.os.Process.killProcess(android.os.Process.myPid()/获取 PID,目前获取自己的也只有该 API,否则从/proc 中自己的枚举其他
2、进程吧,不过要说明的是,结束其他进程不一定有权限,不然就乱套了。System.exit(0);/常规 java、c#的标准退出法,返回值为0 代表正常退出2.任务管理器方法首先要说明该方法运行在Android 1.5 API Level为 3 以上才可以,同时需要权限android.permission.RESTART_PACKAGES,我们直接结束自己的package 即可,直接使用ActivityManager 类的 restartPackage 方法即可,参数为 package name,该类通过getSystemService(Context.ACTIVITY_SERVICE)来实例化
3、 ActivityManager 对象,这种方法系统提供的,但需要显示声明权限,所以使用中需要综合考虑。3.根据 Activity 的声明周期我们知道 Android 的窗口类提供了历史栈,我们可以通过stack 的原理来巧妙的实现,这里我们在 A 窗口打开 B 窗口时在 Intent 中直接加入标志Intent.FLAG_ACTIVITY_CLEAR_TOP,这样开启 B 时将会清除该进程空间的所有Activity。在 A 窗口中使用下面的代码调用B 窗口Intent intent=new Intent();intent.setClass(Android123.this,CWJ.class)
4、;intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);/注意本行的 FLAG 设置startActivity(intent);接下来在 B 窗口中需要退出时直接使用finish 方法即可全部退出。对话窗口上的 ICON 图标范例说明此范例将说明设置离开与关闭程序的对话窗口提示选项。而打开这个对话窗口是由一个按钮来处理,当单击按我离开按钮时,会出现 AlertDialog 的信息,而 AlertDialog 的内容设置,先设置是否要显示title 的文字(也可以不设置),该范例是会让它显示的,所以使用 res/values/string/app_abo
5、ut这个字符串常数。下一步则是显示 AlertDialog 的正文信息,使用的方法是.setMessage,如果不使用的话,就会发现 AlertDialog 的正文的字段是不显示的,故在这边设置显示内容为提示对话内容,正文的信息则是 res/values/string/app_msg。而本范例最重要的并非是AlertDialog 的设计或流程,因为这些在前一章已经看过了,在此要示范的是如何在 AlertDialog 里显示图片、配置确定以及取消按钮,并学会如何判断在 AlertDialog 里单击的按钮事件,即设计在离开程序之前跳出AlertDialog,让 User 再一次确认是否关闭应用程
6、序,并在 AlertDialog 上设计确定与取消按钮,当单击确定按钮才会真的离开程序,单击取消按钮则会回到程序中。运行结果(见图 4-27)范例程序1.src/irdc.ex04_26/EX04_26.java主程序设置的 AlertDialog 有两个 Button,或许有人会询问:Button 没有在layout/main.xml 里创建,为何会出现呢?这是因为在动态生成AlertDialog 的同时,也重写了按钮事件;AlertDialog 里面的 Button 语句,与一般在 Layout 当中先部署 Button 不一样,确定Button 跟取消Button 都会有追加方法的描述。
7、如确定Button 的描述是PositiveButton,而取消Button 的命令为 NegativeButton。在构造 AlertDialog 内的确定Button 中的 OnClickListener事件后,如果发生Positive Button 事件,则以finish()结束程序,程序就会自行关闭,这个finish()代表的意思,是把整个 Activity 给关掉,并由 Android.os 回收已配置的系统资源。1.2.3.4.5.6.7.8.9./*import 程序略*/publicclass EX04_26 extends Activity/*声明 Button 对象*/10
8、.private Button mButton1;11.12./*Called when the activity is first created.*/13.14.Override15.16.public void onCreate(Bundle savedInstanceState)17.18.super.onCreate(savedInstanceState);19.setContentView(R.layout.main);20.21.22.23./*取得 Button 对象*/24.mButton1=(Button)findViewById(R.id.myButton1);25.mB
9、utton1.setOnClickListener(new Button.OnClickListener()26.27.Override28.29.public void onClick(View v)30.31.32./TODO Auto-generated method stub33.34.35.new AlertDialog.Builder(EX04_26.this)36.37./*弹出窗口的最上头文字*/38.39.setTitle(R.string.app_about)40.41./*设置弹出窗口的图式*/42.43.setIcon(R.drawable.hot)44.45./*设置
10、弹出窗口的信息*/46.47.setMessage(R.string.app_about_msg)48.setPositiveButton(R.string.str_ok,49.50.new DialogInterface.OnClickListener()51.52.53.public void onClick54.(DialogInterface dialoginterface,int i)55.56.finish();/*关闭窗口*/57.58.59.60.).setNegativeButton(R.string.str_no,61.62.new DialogInterface.OnCl
11、ickListener()63.64.65./*设置跳出窗口的返回事件*/66.67.68.public void onClick(DialogInterface dialoginterface,int i)69.70.71.72.).show();73.74.);75.复制代码扩展学习AlertDialog.setIcon()可以置换对话窗口里的图标,在不设置此方法时就只有文字,若使用了 setIcon()方法后,就会将图标显示在对话窗口当中。你可以试着使用setIcon()方法将Drawable ID传入(默认的drawable路径为res/drawable)即可,以下的代码段可将原本的感叹号图标更换为一个心碎的小图标。new AlertDialog.Builder(EX04_26.this)/*弹出窗口的最上头文字*/.setTitle(R.string.app_about)/*设置弹出窗口的图式*/.setIcon(R.drawable.hot)/*设置弹出窗口的信息*/.setMessage(R.string.app_about_msg)需留意放入的 Icon 图片不可以太大,最好先缩图之后再导入项目,若能参考手机画面的分辨率来设计更佳运行结果如图4-28 所示。
限制150内