[英]Pressing the "go back" button closes the application
我目前正在缓慢但稳步地制作一个 Android 应用程序,我目前正在学习如何创建一个新的 window 并切换到它。 一切顺利,但我有一个小问题。 当我按下“返回”按钮关闭应用程序时,即使我选择了 go 在按下该按钮时返回。
@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 :About.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);
}
}
您需要使用Intents
来“切换窗口”。 “窗口”在 Android 中称为Activity
,您可以在Activity
的onCreate()
调用中使用setContentView()
方法设置Activity
的视觉内容。
要从您当前的Activity
启动另一个Activity
,只需创建一个带有几个参数的Intent
并使用该Intent
调用startActivity()
。 这是一个例子:
Intent i = new Intent(this, TheNextActivity.class);
startActivity(i);
不要忘记将您的第二个Activity
包含在 Android 清单文件中。 您应用程序中的所有Activities
都必须包含在该文件中。
其他需要注意的是,您实际上并没有在 Android 中使用System.exit()
。只需调用finish()
即可。 建议让 Android 管理应用程序及其资源,而不是自己动手,但如果您想确保您的应用程序确实已关闭,请随时使用System.exit()
。 如果您只调用finish()
,则也无需覆盖onBackPressed()
) 。 当您点击后退按钮时,这是 Android 中的标准行为。
此外,您不会在每个Activity
中多次调用setContentView()
。 当您需要更改视觉效果时,您可以启动一个新的Activity
(或使用一个专门的小部件在布局之间切换。
这也解释了为什么您遇到“问题”。 您可能已经使用setContentView()
更改了Activity
的布局,但仍然只有一个Activity
在运行 - 当您调用finish()
时,该Activity
将关闭。 如果您启动了第二个具有不同布局的Activity
,就像您应该做的那样,Android 将关闭第二个Activity
并将您返回到第一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.