0

我目前正在缓慢但稳步地制作一个 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);
    }

}
4

1 回答 1

1

您需要使用Intents“切换窗口”。“窗口”Activity在 Android 中称为 an,您可以Activity使用setContentView()调用onCreate().Activity

Activity要从当前启动另一个Activity,只需创建一个Intent带有一些参数并startActivity()使用它调用Intent。这是一个例子:

Intent i = new Intent(this, TheNextActivity.class);
startActivity(i);

不要忘记Activity在 Android 清单文件中包含您的第二个。您的应用程序中的所有Activities内容都必须包含在该文件中。

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

此外,您不会setContentView()多次调用每个Activity. Activity当您需要更改视觉效果(或使用其中一个专门的小部件在布局之间切换)时,您可以开始一个新的。

这也解释了为什么您会遇到“问题”。您可能已经更改了Activityusing的布局setContentView(),但仍然只有一个Activity正在运行 - 当您调用 时finish(),它Activity会关闭。如果您Activity以不同的布局开始第二个,就像您应该做的那样,Android 会关闭第二个Activity并将您返回到第一个。

于 2012-04-04T00:07:18.853 回答