到目前为止,我只是通过在方法中键入名称来编写我的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();
}
答案 0 :(得分:4)
假设txt
是TextView
,那么您可以txt.setText(R.string.string_name)
。您通常可以通过它的资源ID引用字符串,而不是明确地获取它。有关http://developer.android.com/guide/topics/resources/string-resource.html
答案 1 :(得分:1)
作为所有资源的字符串资源是从Context实例(通常是Activity实例或Application实例)中从应用程序解析的。在静态上下文中,除非将它们传递给静态方法,否则没有任何实例。
无论如何,您需要在非静态环境中执行某些操作。要么保留一个Resources对象的副本并将其传递给静态方法,要么传递一个能够解析资源的Context实例,或者在静态方法之前的某个时刻有一个静态的Resources对象。被叫。
话虽这么说,你可能想重新审视一下你是否绝对需要这些方法是静态的。