从字符串获取布局ID,将无法正常工作

Jak*_*kob 5 string android widget

看过每一个问题,都无法让它发挥作用.

我想用一个字符串的值设置一个AppWidgets布局(所以只需更改字符串就可以将布局切换到另一个布局).

String NoteString = "R.layout.widget_blue".toString();

int resID = context.getResources().getIdentifier(NoteString, "layout", context.getPackageName());

RemoteViews views = new RemoteViews(context.getPackageName(), resID);
Run Code Online (Sandbox Code Playgroud)

不知道为什么它不起作用,小部件只是说:"问题加载小部件"..

这很好用:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_blue);
Run Code Online (Sandbox Code Playgroud)

谢谢

Dev*_*red 17

要从字符串组件构造资源ID,您必须将单个组件传递到getIdentifier(),而不是作为单个参数的完全限定ID:

//Get the ID for R.layout.widget_blue
int resID = context.getResources().getIdentifier("widget_blue", "layout", context.getPackageName());
Run Code Online (Sandbox Code Playgroud)

然后只需更改第一个参数名称即可获得不同的布局资源.