所以我创建了一个主细节流活动,当然修改它并添加了我自己的代码,但它不会让我最后返回一个整数。这是代码
public class DummyContent {
public static List<DummyItem> ITEMS = new ArrayList<DummyItem>();
public static Map<String, DummyItem> ITEM_MAP = new HashMap<String, DummyItem>();
static {
addItem(new DummyItem("1",1, R.string.resturant,null,0));
addItem(new DummyItem("2",2,R.string.fork,null,1));
addItem(new DummyItem("3",3,R.string.plates,null,2));
}
private static void addItem(DummyItem item) {
ITEMS.add(item);
ITEM_MAP.put(item.Id, item);
}
public static class DummyItem {
public String Id;
public int name;
public int content;
public Button sounnd;
public int Idd;
public DummyItem(String Id,int name, int content,Button sounnd,int Idd) {
this.Id = Id;
this.name = name;
this.content = content;
this.sounnd = sounnd;
this.Idd = Idd;
}
String change = Integer.toString(content);
@Override
public String toString() {
return change;
}
}
}
实际发生的是它在运行时返回零,而不是字符串资源。我也尝试过回归&#34;&#34; +内容,但也没有工作。
答案 0 :(得分:0)
看起来问题是您在构造函数之外声明String change = Integer.toString(content);
,这意味着它会在content
被分配之前执行。
将其移至构造函数中:
public DummyItem(String Id,int name, int content,Button sounnd,int Idd) {
this.Id = Id;
this.name = name;
this.content = content;
this.sounnd = sounnd;
this.Idd = Idd;
this.change = Integer.toString(content);
}
应该解决部分问题。第二部分是将资源ID解析为相应的字符串。为此,您还需要一个上下文:
public DummyItem(Context context, String Id,int name, int content,Button sounnd,int Idd) {
...
this.change = context.getString(context);
}
或者,您可以添加另一个类似于toString()
的方法,该方法接受Context
参数并使用它来解析字符串:
public String getContentString(Context context) {
return context.getString(content);
}