使用后退按钮进入主视图

时间:2011-10-20 21:39:20

标签: android button view main back

我有一个带有主视图和一组子视图的应用程序,定义为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);
}

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

你知道为什么会这样吗? 如何回到主视图,其按钮功能与上一次相同?

感谢您的帮助 佩德罗

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

当您要求的声音类似于标准应用程序流程时,这看起来似乎很多。拥有主要活动会更容易,而不是更改视图,您应该使用startActivity在活动之间进行更改。这也可以通过后退按钮为您提供所需的行为,而无需编写任何代码来处理它。

答案 2 :(得分:1)

我认为你不能多次调用setContentView。无论哪种方式,你绝对不应该。

ViewSwitcher javadoc

first example

second example