getId()返回一个膨胀的视图是什么?

时间:2015-01-20 13:10:41

标签: android switch-statement layout-inflater

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。

1 个答案:

答案 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