查找并返回当前视图的ID

时间:2011-06-28 01:39:21

标签: android layout view

我正在尝试在游戏中设置“接近开始”按钮。游戏将用户从视图中视为迷宫般的视图。用户可以在任何视图上,但我想要一种方法让他们回到开始屏幕。有没有办法找到并返回我的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);
    }
};

2 个答案:

答案 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或改变可见度,而且代码更清晰,因为它将你的迷宫级别和开始菜单的代码分开。