无法从Context类型对非静态方法getString(int)进行静态引用

时间:2011-11-29 08:08:24

标签: android commonsware

参考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))

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

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

2 个答案:

答案 0 :(得分:4)

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

void populateFrom(Restaurant r,Context context)
{
//other code
r.getType().equals(context.getString(R.string.TakeAway))
//other code
}

答案 1 :(得分:0)

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