Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 按「;“回去”;按钮关闭应用程序_Android_Eclipse_Back - Fatal编程技术网

Android 按「;“回去”;按钮关闭应用程序

Android 按「;“回去”;按钮关闭应用程序,android,eclipse,back,Android,Eclipse,Back,我目前正在缓慢但稳步地开发Android应用程序,我正在学习如何创建一个新窗口并切换到它。这一切进展顺利,但我有一个小问题。当我按下“返回”按钮时,关闭应用程序,即使我已选择在按下该按钮时返回 @Override public void onBackPressed() { finish(); return; } 我错过什么了吗 提前谢谢 编辑 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuIn

我目前正在缓慢但稳步地开发Android应用程序,我正在学习如何创建一个新窗口并切换到它。这一切进展顺利,但我有一个小问题。当我按下“返回”按钮时,关闭应用程序,即使我已选择在按下该按钮时返回

@Override
public void onBackPressed() {
    finish();
    return;
}
我错过什么了吗

提前谢谢

编辑

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{       
    // Handle item selection
    switch (item.getItemId())
    {
    case R.id.menuItem1:
        setContentView(R.layout.about);
        return true;
    case R.id.menuItem2:
        System.exit(0);
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}
编辑2:关于.java

package weather.right;

import weather.right.now.R;
import android.os.Bundle;

public interface About {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.about);
    }

}

您需要使用
意图
来“切换窗口”。在Android中,“窗口”被称为
活动
,您可以使用
活动
调用的
onCreate()
中的
setContentView()
方法设置
活动
的可视内容

要从当前的
活动
启动另一个
活动
,只需使用一些参数创建一个
意图
,然后使用该
意图调用
startActivity()
。下面是一个例子:

Intent i = new Intent(this, TheNextActivity.class);
startActivity(i);
不要忘记在Android清单文件中包含第二个
活动。应用程序中的所有
活动必须包含在该文件中

另外需要注意的是,您在Android中并没有真正使用
System.exit()
。只需调用
finish()
。建议让Android管理应用程序及其资源,而不是自己管理,但如果你想确保你的应用程序真的被关闭,请随时使用
System.exit()
。如果只调用
finish()
,也不需要重写
onBackPressed()
。当你点击后退按钮时,这是Android的标准行为

此外,每个
活动调用
setContentView()
的次数不超过一次。当您需要更改视觉效果(或使用一个专用小部件在布局之间切换)时,您可以启动一个新的
活动


这也解释了您遇到“问题”的原因。您可能已使用
setContentView()
更改了
活动的布局,但在调用
finish()时,仍然只有一个
活动运行
,该
活动
将被关闭。如果您以不同的布局启动了第二个
活动
,就像您应该做的那样,Android将关闭第二个
活动
,并将您返回到第一个。

finish()将结束当前活动。你确定其他活动仍在运行吗?在大多数情况下,最好让Android来处理“后退”按钮,而不是覆盖该功能。你可以发布用于启动当前活动的代码吗?我不知道,但你可以查看我的编辑以了解我如何进行“窗口切换”我不明白你为什么在
MenuItems
中使用
System.exit()
setContentView()
。当你覆盖后退按钮时,你正在调用
finish()
,所以当你按下它时,当前运行的任何
活动都将关闭。我阅读了一本关于如何创建此“选项菜单”的指南然后从那里复制粘贴代码。根据此页面(堆栈溢出),
System.exit(0)
关闭了应用程序,与切换到
System.exit(0)之前使用的
finish();
不同
。我应该使用什么?我刚刚在下面添加了一个相当详细的解释。希望这会对您有所帮助。谢谢!我得到了构造函数的意图(new View.OnClickListener(){},Class)是未定义的
但当我将extActivity
更改为About
并在com.weather.right.now>src>weather.right中添加About.java时。我不知道为什么,但你知道为什么吗?应该是
意图(currentActivity的名称。这个,secondActivity.class的名称)
。非常感谢!我遇到了一个新错误-
抽象方法没有指定主体?
public void onCreate(Bundle savedInstanceState)上{
在About.java文件中。有关详细信息,请参阅第一篇文章中的编辑。为什么会出现此错误?它应该是一个类,而不是一个接口。该类需要扩展活动。基本上只需将“public interface About”替换为“public class About extends Activity”。谢谢,但我现在无法在Android虚拟设备中打开应用程序。是否要查看LogCat?