【问题标题】:Closing Application with Exit button [duplicate]使用退出按钮关闭应用程序[重复]
【发布时间】:2011-08-26 05:19:11
【问题描述】:

我是 android 的初学者,我正在练习一个有 2 个标签和 1 个退出按钮的项目。但是当我在安卓手机上运行这个项目时,退出按钮不起作用,它根本不会退出。

如何使退出按钮起作用?

【问题讨论】:

  • 退出按钮并不是(预期的)Android 用户体验的一部分。您按下返回键或返回键,然后“离开”活动。
  • 一个重复的问题如何获得 20 票和 14 星?

标签: android android-layout layout exit


【解决方案1】:

下面用到了main.xml文件

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:id="@+id/txt1" android:text="txt1" />
<TextView android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:id="@+id/txt2"   android:text="txt2"/>
<Button android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:id="@+id/btn1"
    android:text="Close App" />
  </LinearLayout>

text.java 文件在下面


import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class testprj extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button btn1 = (Button) findViewById(R.id.btn1);
    btn1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            finish();
            System.exit(0);
        }
    });
    }
 }

【讨论】:

  • 我应该将该代码放在 Android 中的哪个位置,我的意思是它是在 res 中,还是在 src 中,还是在 srring.xml 中?我真的是 Android 的新手..
  • 等待 5 分钟,我会给你代码。
  • 谢谢..无论输出如何,我都会在这里更新..
  • 是的,我试过了,它成功了,特别是当我在 Android 设备上安装程序时。非常感谢。我下一步是制作一个可以发送消息的应用程序。 :) 再次感谢。
  • 但是当按下 BACK BUTTON 时,它会移动到较早的屏幕:-(
【解决方案2】:

永远不要在 Android 应用上放置退出按钮。让操作系统决定何时终止您的活动。了解 Android Activity 生命周期并实现任何必要的回调。

【讨论】:

  • 这里 4 个回复中唯一正确的答案,恕我直言。
  • 作为一个例子(虽然这不是 android):我的 ipad 上的 netflix 应用程序有很多问题。我经常会陷入冻结状态。我必须手动退出应用程序才能重新进入。我并不是说“exit(0)”可以解决这个问题,但它肯定会在遇到麻烦时创造更好的用户体验(尤其是对于新手用户)。程序员仍然可以通过异常处理等方式意识到这个问题
  • @EboMike 我不同意。具有阻塞网络的后台服务、不必要的通知、耗尽电池电量并可能导致更差的用户体验(阻塞通知区域)的广播的应用程序。是的,Android 确实会在需要时处理资源,但这也不好,因为 Android 必须花时间这样做,并且可能导致操作系统闪烁/略微滞后,具体取决于应用程序,但是当用户知道他/她想要由于电池耗尽等原因,100% 的应用程序没有运行。他/她应该能够做到。还可以防止糟糕的开发人员发生内存泄漏。
  • 有些应用必须由用户关闭。应用程序涉及安全、收集安全数据等等......
  • 我认为退出确实有一些用处;我正在制作一个隐形应用程序,它在 5 次投掷后中止整个操作,我希望它退出整个事情,而不仅仅是那个活动。如果它也可以锁定手机,那就太棒了。
【解决方案3】:

试试这个关闭应用程序

Activity.finish();
System.exit(0);

【讨论】:

  • 如果我们在第二、第三个活动中,那么我们可以直接在这个应用程序中退出......我认为这只是为了......如果我们在主要活动中执行此操作或第一个活动,然后我们只能退出......否则这不能用于退出,这只会返回......
  • 仅适用于关闭活动,不适用于关闭第二个活动中的应用程序!
【解决方案4】:

我试试这个

Button btnexit = (Button)findviewbyId(btn_exit);

btnexit.setOnClicklistenr(new onClicklister(){

     @override
     public void onClick(View v){
            finish();
});

【讨论】:

  • 但是当按下 BACK BUTTON 时,它会移动到较早的屏幕。如何处理类似 [session flush]
  • @hitesh 此代码仅用于返回活动它是如何工作的......不,不,如果我们在第二个活动和第三个活动中,这将不起作用,那么这将无法退出。它只会返回......如果我们在 splesh 或第一个活动中进行此操作,那么我们只能退出......
【解决方案5】:
this.close_Button = (Button)this.findViewById(R.id.close);
   this.close_Button.setOnClickListener(new OnClickListener() {
     @Override
     public void onClick(View v) {
        finish();
     }
  });

finish() - 当你的活动完成并应该关闭时调用它。 ActivityResult 被传播回通过onActivityResult() 启动你的人。

【讨论】:

  • 谢谢.. 这对我帮助很大。 :)
  • 仅适用于关闭活动,不适用于关闭第二个活动中的应用程序!
【解决方案6】:

您无法退出您的应用程序。使用android.finish() 不会退出 应用程序,它只是杀死活动。它在我们不使用的时候使用 想在单击后退按钮时查看上一个活动。这 当您关闭设备时,应用程序会自动退出。这 Android 架构不支持退出应用。如果你想, 您可以强制退出应用程序,但这并不好 练习。

【讨论】:

    猜你喜欢
    • 2011-07-12
    • 2012-09-23
    • 2023-03-08
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    相关资源
    最近更新 更多