我正在尝试在游戏中设置“接近开始”按钮。游戏将用户从视图中视为迷宫般的视图。用户可以在任何视图上,但我想要一种方法让他们回到开始屏幕。有没有办法找到并返回我的findViewByID当前视图的ID?我发现我已经尝试了以下各种形式的代码:
OnClickListener closetomain = new OnClickListener() {
@Override
public void onClick(View v) {
int currentid = v.findFocus().getId();
RelativeLayout hideme = (RelativeLayout)findViewById(currentid);
hideme.setVisibility(View.GONE);
setContentView(R.layout.main);
// RelativeLayout showme = (RelativeLayout)findViewById(R.id.startLayout);
// showme.setVisibility(View.VISIBLE);
}
};
答案 0 :(得分:1)
好的,事实证明我应该给每个关闭按钮提供相同的ID,并使用theisenp建议最简单的代码(好吧,我能理解)。事实证明,我应该首先将每个级别/布局放在自己的活动中。你生活,你学习我猜。下面是我的XML和java。它可能不是优雅的解决方案,但只要它有效,我不确定我是否在乎这么多。
<ImageButton android:id="@+id/closeButton"
android:layout_height="wrap_content"
android:background="@drawable/close"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:onClick="closetomain">
</ImageButton>
这是我的Java:
public void closetomain(View view) {
switch(view.getId()) {
case R.id.closeButton:
setContentView(R.layout.main);
break;
}
}
答案 1 :(得分:0)
为什么需要检索当前视图的ID?是否只是为了让你可以将它的可见性设置为GONE?如果是这样,可能有更好的方法来实现相同的功能。
不是仅仅使用setContentView()更改布局,而是将Start Screen作为自己独立的活动可能更好。当您在任何“迷宫视图”中时,您可以简单地使用意图来启动此类主屏幕活动
Intent startScreenIntent = new Intent(this, StartScreen.Class);
startActivity(startScreenIntent);
然后你不必担心找到id或改变可见度,而且代码更清晰,因为它将你的迷宫级别和开始菜单的代码分开。