繁体   English   中英

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

[英]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 ,您可以在ActivityonCreate()调用中使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM