膨胀视图的 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