在string.xml中我添加了一些像这样的字符串
<string name="m8d1">text sample</string>
<string name="m8d2">text sample</string>
<string name="m8d3">text sample</string>
我有小部件我希望按日期显示月份和日期小部件代码
public class Widget extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
Calendar calendar = Calendar.getInstance();
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
String txt = context.getString(R.string.m"+month+"d"+day);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
remoteViews.setTextViewText(R.id.widgettext,txt);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
}
答案 0 :(得分:0)
您需要深入了解R.string.m
的含义。
你将无法做像
String txt = context.getString(R.string.m"+month+"d"+day);
详细解释 -
R文件包含静态类string
,string
类包含静态整数成员m
。没有像键值对那样你不能通过字符串访问它。
修改强> 您可以使用此方法使用字符串 -
获取值private String getStringResourceByName(Context context,String name) {
int resId = context.getResources().getIdentifier(name, "string", context.getPackageName());
return context.getString(resId);
}
所以现在你可以拥有像 -
这样的东西String txt = getStringResourceByName(context,"m"+month+"d"+day);
答案 1 :(得分:0)
希望这能帮到你
String txt="m"+month+"d"+day;
txt=context.getResources().getString(context.getResources().getIdentifier(txt, "string", getPackageName()));
答案 2 :(得分:-1)
你必须使用
String txt = context.getResource().getString(R.string.m)+month+"d"+day;