Невозможно сделать статическую ссылку на нестатический метод getString (int) из типа Context - PullRequest
1 голос
/ 29 ноября 2011

Со ссылкой на пример списка обедов в «Учебниках по программированию 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) из типа Context"

Извините, это, наверное, глупый вопрос, но мне действительно нужна помощь.

Ответы [ 2 ]

4 голосов
/ 29 ноября 2011

если вы хотите получить строку таким образом, вы можете попробовать что-то вроде этого:

void populateFrom(Restaurant r,Context context)
{
//other code
r.getType().equals(context.getString(R.string.TakeAway))
//other code
}
0 голосов
/ 29 ноября 2011

Поскольку вы определяете класс с помощью ключевого слова static по умолчанию, все переменные и метод-член, которые были определены в этом классе, являются статическими, поэтому нестатический метод, который вы не можете использовать в методе класса, требует наличия какого-либо объекта для использования этого метода, или вы может удалить статическое ключевое слово из определения класса

...