gpt4 book ai didi

android - inflatedView 的 getId() 返回什么?

转载 作者:行者123 更新时间:2023-11-29 15:55:44 25 4
gpt4 key购买 nike

嘿伙计们,

我目前遇到一个开关盒的问题,它应该包含我的 inflatedView(我有 3 种不同的布局,取决于显示的 Fragment,它们将在我的 MenuBar 中膨胀)。

目前我的 switch case 是这样的:

switch(inflatedView.getId()){
case R.layout.menu_title_only:
break;
case R.layout.menu_segment_controller:
break;
}

然而,当它肯定膨胀时,它不会产生所需的情况。

我知道 View.getId() 返回这个 View 的 android:id,但是如果这个 View 被膨胀了怎么办?那么它会返回哪个 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() 将返回布局中顶级 View 的 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>

然后膨胀 View 的 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

关于android - inflatedView 的 getId() 返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28046196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com