按“返回”按钮可关闭应用程序

时间:2012-04-03 23:54:21

标签: android eclipse back

我目前正在制作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);
    }

}

1 个答案:

答案 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>