我目前正在制作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 :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);
}
}
答案 0 :(得分:1)
您需要使用Intents
来“切换窗口”。 Android中的“窗口”称为Activity
,您可以使用Activity
调用setContentView()
方法onCreate()
方法设置Activity
的可视内容
要从当前Activity
启动另一个Activity
,只需创建一个包含几个参数的Intent
,然后使用该startActivity()
致电Intent
。这是一个例子:
Intent i = new Intent(this, TheNextActivity.class);
startActivity(i);
不要忘记将第二个Activity
包含在Android清单文件中。应用程序中的所有Activities
都必须包含在该文件中。
需要注意的其他事项是,您在Android中并未真正使用System.exit()
。只需致电finish()
即可。建议让Android管理应用程序及其资源,而不是自己动手,但如果你想确保你的应用程序真的关闭,那么无论如何都可以使用System.exit()
。如果您只是致电onBackPressed()
,也无需覆盖finish()
。当您点击后退按钮时,这是Android中的标准行为。
此外,您不能每setContentView()
次致电Activity
次。当您需要更改视觉效果时(或使用其中一个专用窗口小部件在布局之间切换),您可以启动新的Activity
。
这也解释了为什么你遇到了“问题”。您可能已使用Activity
更改了setContentView()
的布局,但仍然只有一个Activity
正在运行 - 当您致电finish()
时,Activity
将被关闭。如果您使用不同的布局开始了第二个Activity
,就像您应该做的那样,Android会关闭第二个Activity
并将您返回到第一个。{/ p>