使用后退按钮返回到主视图



我有一个应用程序的主视图和一组子视图,定义为xml。我用:

加载主视图
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

当我切换到另一个视图,我做:

holaPlayerBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view)
{   
    setContentView(R.layout.primerareceta);
    };

要返回到主视图,我正在尝试:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
    if (keyCode == KeyEvent.KEYCODE_BACK){
        setContentView(R.layout.main);
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

但是这样做,我得到的是主视图重新绘制,但它包含的按钮不再起作用。

你知道为什么会这样吗?我怎样才能回到主视图,它的所有按钮都像以前一样工作?

谢谢你的帮助佩德罗

当你调用setContentView时,你正在替换屏幕上的内容。这有效地删除了您之前拥有的所有侦听器和视图。要做到这一点,你可能想把你的原始初始化代码放在一个函数中,你可以在onCreate中调用这个函数,也可以在返回按钮被按下的时候调用。

当您要求的内容听起来像标准应用程序流程时,这看起来确实需要做很多工作。它会更容易有一个主活动,而不是改变视图,你应该在活动之间改变使用startActivity。这也将为您提供您想要的返回按钮的行为,而无需编写任何代码来处理它。

我不认为你被允许调用setContentView不止一次。不管怎样,你绝对不应该。

ViewSwitcher javadoc

第一个例子

第二个例子

不要这样切换布局。我建议使用单独的活动,或者您可以使用ViewSwitcher .

相关内容

  • 没有找到相关文章

最新更新