我有一个带有主视图和一组子视图的应用程序,定义为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);
}
但是这样做,我得到的是重新绘制的主视图,但它包含的按钮不再起作用。
你知道为什么会这样吗? 如何回到主视图,其按钮功能与上一次相同?
感谢您的帮助 佩德罗
答案 0 :(得分:1)
不要切换那样的布局。我建议您使用单独的活动,或者您可以使用ViewSwitcher
。
答案 1 :(得分:1)
当您调用setContentView时,您正在替换屏幕上的内容。这有效地删除了之前的所有侦听器和视图。要做到这一点,你可能想要在你可以在onCreate内部调用的函数内部以及按下后退按钮时的原始初始化代码。
当您要求的声音类似于标准应用程序流程时,这看起来似乎很多。拥有主要活动会更容易,而不是更改视图,您应该使用startActivity在活动之间进行更改。这也可以通过后退按钮为您提供所需的行为,而无需编写任何代码来处理它。
答案 2 :(得分:1)