因此,我的片段活动从另一个片段中获取一些字符串[来自名称数组]。我有很多XML布局,名称[来自同一个数组]。 例如,如果活动获得字符串“dogs”,我希望它设置/显示 dogs.xml 布局。
很明显我不能这样做:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
String LAYOUT_NAME = getArguments().getString("layout_name");
View v = inflater.inflate(R.layout.LAYOUT_NAME, container, false);
return v;
}
当然我可以使用 Switch / Case ,但我确信可以按照我想象的方式对其进行编码。谢谢你的帮助。
答案 0 :(得分:0)
使用onCreateView()
表示您引用了片段代码,而不是活动。最简单的方法是使用setArguments()
简单地将该字符串传递给片段。然后,您可以在片段中执行getArguments()
,检查值并根据需要扩展正确的布局
修改强>
public Integer getLayoutIdByName( String name ) {
Integer layoutId = null;
try {
Class res = R.layout.class;
Field field = res.getField( name );
layoutId = field.getInt(null);
}
catch (Exception e) {
// no such layout
}
return layoutId;
}
答案 1 :(得分:0)
这就是你要找的东西:
int id= getResources().getIdentifier(LAYOUT_NAME, "layout", getPackageName());
(我不会为变量使用完整的大写名称)
答案 2 :(得分:0)
如何按名称加载布局:
setContentView(getResources().getIdentifier("name_of_layout", "layout", "yourpackagename"),);
但要小心。如果您使用该应用程序,这可能会失败。