1

参考 Mark L.Murphy 在“Android 编程教程”中的午餐列表示例,在下面的静态类代码(第 84 页)中:

static class RestaurantHolder {
    private TextView name=null;
    private TextView address=null;
    private ImageView icon=null;
    RestaurantHolder(View row) {
        name=(TextView)row.findViewById(R.id.title);
        address=(TextView)row.findViewById(R.id.address);
        icon=(ImageView)row.findViewById(R.id.icon);
    }
   void populateFrom(Restaurant r) {
        name.setText(r.getName());
        address.setText(r.getAddress());
        if (r.getType().equals("sit_down")) {
          icon.setImageResource(R.drawable.ball_red);
        }
        else if (r.getType().equals("take_out")) {
          icon.setImageResource(R.drawable.ball_yellow);
        }
        else {
          icon.setImageResource(R.drawable.ball_green);
        }
      }
    }

我正在尝试替换

r.getType().equals("take_out")

r.getType().equals(getString(R.string.TakeAway))

但我收到错误“无法从类型上下文中对非静态方法 getString(int) 进行静态引用”

抱歉,这可能是一个愚蠢的问题,但我真的需要帮助。

4

2 回答 2

4

如果你想以这种方式获取字符串,你可以尝试这样的事情:

void populateFrom(Restaurant r,Context context)
{
//other code
r.getType().equals(context.getString(R.string.TakeAway))
//other code
}
于 2011-11-29T08:20:07.613 回答
0

默认情况下,当您使用 static 关键字定义类时,该类中定义的所有成员变量和方法都是静态的,因此您不能将非静态方法用于类方法中,您需要任何对象才能使用该方法,或者您可以删除类定义中的静态关键字

于 2011-11-29T08:15:22.747 回答