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