android按日期月份和日期选择字符串

时间:2015-08-02 17:12:30

标签: java android string date

在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);
    }

3 个答案:

答案 0 :(得分:0)

您需要深入了解R.string.m的含义。 你将无法做像

这样的事情
String txt = context.getString(R.string.m"+month+"d"+day);

详细解释 - R文件包含静态类stringstring类包含静态整数成员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;