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