膨胀视图的 getId() return 是什么?
What does the getId() return of an inflated view?
嘿伙计们,
我目前遇到一个开关盒的问题,它应该包含我的 inflatedView(我有 3 种不同的布局,取决于显示的 Fragment,它们将在我的 MenuBar 中膨胀)。
目前我的开关盒看起来像这样:
switch(inflatedView.getId()){
case R.layout.menu_title_only:
break;
case R.layout.menu_segment_controller:
break;
}
然而,当它肯定膨胀时,它不会产生所需的情况。
我知道 View.getId() return 是这个视图的 android:id,但是如果这个视图被夸大了怎么办?那么return会是哪个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。
getId() 将 return 布局中顶级视图的 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
。
但是,您可以设置 id,因此如果您添加此代码:
inflatedView = activity.getLayoutInflater().inflate(R.layout.menu_segment_controller, menu);
inflatedView.setId(R.layout.menu_segment_controller);
然后 getId() 将 return R.layout.menu_segment_controller
嘿伙计们,
我目前遇到一个开关盒的问题,它应该包含我的 inflatedView(我有 3 种不同的布局,取决于显示的 Fragment,它们将在我的 MenuBar 中膨胀)。
目前我的开关盒看起来像这样:
switch(inflatedView.getId()){
case R.layout.menu_title_only:
break;
case R.layout.menu_segment_controller:
break;
}
然而,当它肯定膨胀时,它不会产生所需的情况。
我知道 View.getId() return 是这个视图的 android:id,但是如果这个视图被夸大了怎么办?那么return会是哪个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。
getId() 将 return 布局中顶级视图的 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
。
但是,您可以设置 id,因此如果您添加此代码:
inflatedView = activity.getLayoutInflater().inflate(R.layout.menu_segment_controller, menu);
inflatedView.setId(R.layout.menu_segment_controller);
然后 getId() 将 return R.layout.menu_segment_controller