所以,我有我的应用程序,我希望很容易改变。在中,我希望能够只生成xml文件,而不必为每个客户端自定义更改java。这适用于类似于信息亭的软件,其中不需要额外的功能,只需要信息。
我设置了片段,以便在点击按钮时替换片段,如下所示:
@Override
public void onClick(View v) {
MainFragment fragment = new MainFragment();
layoutId = R.layout.fragment_ad;
fragment.setLayoutId(layoutId);
android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.top_main, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
layoutId是我在MainFragment类中创建的一个变量,它让它知道在调用transaction.replace()时要访问的xml文件。
以下是xml的片段:
<Button
android:layout_width="0px"
android:layout_height="fill_parent"
android:text="New Button"
android:id="@+id/button3"
android:layout_weight="2.75"
android:onClick="onClick"
android:tag="R.layout/fragment_ad"
/ >
现在我想要做的是,而不是将layoutId设置为R.layout.fragment_ad,我想用v.getTag()指向的内容替换它。但是,v.getTag()是一个可以转换为字符串,int或其他一些东西的对象,但不能用于从R获取布局信息。
有没有办法可以使用android:tag的内容并让它获得标签文本所指向的布局ID?不过,我并不顽固地使用这个标签,所以如果有人想出更好的解决方案,那么我全都是耳朵。
答案 0 :(得分:0)
我认为您需要的是getIdentifier()
String buttonTag = button.getTag().toString();
layoutId = this.getResources().getIdentifier(buttonTag, "layout", app_package_name);
this
代表Acivity。并在xml中:
android:tag="fragment_ad"
但这种获取标识符的方式非常慢。