【问题标题】:Android toString method in static context静态上下文中的Android toString方法
【发布时间】:2011-02-24 00:13:56
【问题描述】:

到目前为止,我只是通过在方法中输入名称来编写我的 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();

}

【问题讨论】:

  • 请显示您的完整代码。
  • +1 用于显示更多代码。在您当前的行中,您不能调用 getString() 或引用 TextView 这可能是来自静态上下文的实例变量。我们需要更多背景信息来帮助解决真正的问题。
  • 抱歉,现在全部添加 - 这是在我的 Toasts 课上。

标签: android tostring


【解决方案1】:

假设txtTextView,那么你可以只做txt.setText(R.string.string_name)。您通常可以通过它的资源 id 引用一个字符串,而不是显式地获取它。更多关于http://developer.android.com/guide/topics/resources/string-resource.html

【讨论】:

  • 如果您处于无法直接使用该 ID 的情况,请尝试以下操作:myString=con.getString(R.string.string_name);
【解决方案2】:

字符串资源,与所有资源一样,都是从应用程序从 Context 实例(通常是 Activity 实例或 Application 实例)中解析出来的。在静态上下文中,您没有任何实例,除非您将它们传递给您的静态方法。

无论如何,您需要在非静态上下文中做某事。要么保留 Resources 对象的副本并将其传递给静态方法,要么传递能够解析资源的 Context 实例,或者在静态方法之前的某个时间点设置一个静态 Resources 对象被调用。

话虽如此,您可能想重新考虑是否绝对需要这些方法是静态的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 2021-06-22
    • 2015-10-21
    • 2011-11-03
    相关资源
    最近更新 更多