根据字符串选择布局

时间:2013-07-07 18:48:16

标签: android android-layout

因此,我的片段活动从另一个片段中获取一些字符串[来自名称数组]。我有很多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 ,但我确信可以按照我想象的方式对其进行编码。谢谢你的帮助。

3 个答案:

答案 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"),);

但要小心。如果您使用该应用程序,这可能会失败。