【问题标题】:Android - Cannot make a static reference to the non-static fieldAndroid - 无法对非静态字段进行静态引用
【发布时间】:2013-06-07 10:55:11
【问题描述】:

由于意图,字符串标题不能是静态的。字符串 URL 必须是静态的才能使用它。这意味着当我尝试将非静态字符串添加到静态字符串时出现错误。我怎样才能让它工作?

错误:无法对非静态字段标题进行静态引用

Intent i = getIntent();
String title = i.getStringExtra("title");


static final String URL = "http://csddata.site11.com/dynamic.php?cat=" + title;

谢谢。

【问题讨论】:

  • 为什么要将URL设为静态?如果你不让它成为静态的,它应该可以工作。
  • 这个问题已经answered elsewhere

标签: java android string static


【解决方案1】:

如果你真的需要让你的字符串保持静态和最终,你可以这样做

static final String URL = "http://csddata.site11.com/dynamic.php?cat=%s";

Intent i = getIntent();
String title = i.getStringExtra("title");

String finalUrl = String.format(URL,title);

【讨论】:

    【解决方案2】:

    这不起作用,因为当当前活动启动时,您将获得 title 的值。

    字符串 URL 是静态的和最终的。静态变量只在执行开始时初始化一次。这些变量将在初始化任何实例变量之前首先被初始化。 将字段声明为“final”将确保该字段是一个常量并且不能更改。

    Intent i = getIntent();
    String title = i.getStringExtra("title");
    
    
    String URL = "http://csddata.site11.com/dynamic.php?cat=" + title;
    

    你的代码现在应该没问题了!!

    【讨论】:

    • 字符串 URL 需要是静态最终的。
    • 你在运行时从另一个活动中获取磁贴,所以如果 String 是静态和最终的,这是不可能获得的
    猜你喜欢
    • 1970-01-01
    • 2015-11-30
    • 2021-11-04
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多