Hee Guys,
我目前遇到一个开关案例的问题应该是我的inflatedView(我有3种不同的布局,取决于显示片段,将在我的MenuBar中膨胀)。
目前我的开关案例看起来像这样:
switch(inflatedView.getId()){
case R.layout.menu_title_only:
break;
case R.layout.menu_segment_controller:
break;
}
然而,当确实充气时,它并未触及所需的情况。
我知道View.getId()会返回此View的android:id,但是如果这个视图被夸大了怎么办?它将返回哪个ID?
public void inflateMenu(BaseFragment frag, String color){
this.color = color;
// Clear Views
menu.removeAllViews();
// Check which menu to inflate
Class<? extends Fragment> FragClass;
FragClass = frag.getClass();
if(FragClass == LocationsFragment.class || FragClass == MustDoFragment.class){
menu.removeAllViews();
inflatedView = activity.getLayoutInflater().inflate(R.layout.menu_segment_controller, menu);
} else if(FragClass == HomeFragment.class) {
inflatedView = activity.getLayoutInflater().inflate(R.layout.menu_title_only, menu);
} else if(FragClass == ButtonFragment.class || FragClass == NewsFragment.class ||
FragClass == EventsFragment.class || FragClass == MapFragment.class) {
inflatedView = activity.getLayoutInflater().inflate(R.layout.menu_title_only, menu);
} else if(FragClass == ViewLocationFragment.class){
inflatedView = activity.getLayoutInflater().inflate(R.layout.menu_share_favorite, menu);
} else {
inflatedView = activity.getLayoutInflater().inflate(R.layout.menu_title_only, menu);
}
setListeners();
}
setListeners(),将使用switch case。
答案 0 :(得分:4)
getId()将返回布局中顶级视图的ID。因此对于例如如果你在 my_layout.xml 中有这样的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/top_layout"
android:layout_width="wrap_content"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/testimage"
android:layout_width="500dp"
android:layout_height="500dp"
android:src="@drawable/image1" />
</RelativeLayout>
然后,膨胀视图的getId()将等于R.id.top_layout
而不是R.layout.my_layout
。
但是,您可以设置ids,因此如果您添加此代码:
inflatedView = activity.getLayoutInflater().inflate(R.layout.menu_segment_controller, menu);
inflatedView.setId(R.layout.menu_segment_controller);
然后getId()将返回R.layout.menu_segment_controller