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



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

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

如果您想以这种方式获得字符串,您可以尝试这样做:

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

当你用static关键字定义类时默认情况下所有定义在这个类中的成员变量和方法都是静态的所以你不能在类方法中使用非静态方法你需要任何对象来使用该方法或者你可以从类定义中删除static关键字

相关内容

  • 没有找到相关文章

最新更新