Метод Android toString в статическом контексте

До сих пор я писал свое приложение для Android, просто вводя имена в методы. Теперь я разбираюсь с этим, просматриваю и помещаю их в string.xml вместо этого и ссылаюсь на строку, используя:

txt.setText(this.getString(R.string.string_name));

Однако при попытке использовать это в статическом контексте (в public static void) это не работает и выдает ошибку.

Есть ли у кого-нибудь указания, как это преодолеть? Я новичок в программировании на Java/Android и впервые столкнулся с этой проблемой. Буду признателен за любую оказанную помощь.

Дополнительный код:

public static void ShowCatAddedAlert(Context con)
{
AlertDialog.Builder builder=new AlertDialog.Builder(con);
builder.setTitle("Add new Category");
builder.setIcon(android.R.drawable.ic_dialog_info);
DialogListner listner=new DialogListner();
builder.setMessage("Category Added successfully");
builder.setPositiveButton("ok", listner);

AlertDialog diag=builder.create();
diag.show();

}


person user319940    schedule 24.02.2011    source источник
comment
Покажите свой полный код, пожалуйста.   -  person user432209    schedule 24.02.2011
comment
+1 за показ большего количества кода. В вашей текущей строке вы не можете вызывать getString() или ссылаться на TextView, которая, вероятно, является переменной экземпляра из статического контекста. Нам понадобится больше контекста, чтобы решить настоящую проблему.   -  person devunwired    schedule 24.02.2011
comment
Извините, все добавлено сейчас - это в моем классе Toasts.   -  person user319940    schedule 24.02.2011


Ответы (2)


Предполагая, что txt является TextView, вы можете просто сделать txt.setText(R.string.string_name). Обычно вы можете ссылаться на строку по ее идентификатору ресурса, а не получать ее явно. Подробнее об этом http://developer.android.com/guide/topics/resources/string-resource.html

person denis.solonenko    schedule 24.02.2011
comment
Если вы находитесь в ситуации, когда вы не можете использовать идентификатор напрямую, попробуйте следующее: myString=con.getString(R.string.string_name); - person Cheezmeister; 24.02.2011

Строковые ресурсы, как и все ресурсы, разрешаются из приложения из экземпляра контекста (обычно это экземпляр действия или экземпляр приложения). В статическом контексте у вас нет экземпляров, если вы не передадите их своим статическим методам.

Так или иначе, вам нужно что-то делать в нестатическом контексте. Либо вы храните копию объекта Resources и передаете ее своим статическим методам, либо передаете экземпляр Context, способный разрешать ваши ресурсы, либо у вас есть статический объект Resources, который устанавливается в какой-то момент до ваших статических методов. позвони.

При этом вы, возможно, захотите пересмотреть, действительно ли вам абсолютно нужны эти методы, чтобы они были статическими.

person Rich    schedule 24.02.2011