【问题标题】:Android Java Cannot make a static reference to the non-static field newcommonAndroid Java 无法对非静态字段 newcommon 进行静态引用
【发布时间】:2015-11-30 05:05:15
【问题描述】:

我是 Java 新手,我有这样的代码

private static final String URL= "http://yahoo.com";

我想让雅虎从edittext变成动态文本

<EditText
       android:id="@+id/url"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:hint="@string/add_account_blog_url"
       android:inputType="textUri" />

EditText url = (EditText)findViewById(R.id.url); 
String newcommon = (String)url.getText().toString();
private static final String URL= newcommon;

无法对非静态字段 newcommon 进行静态引用。

当我尝试制作时

private static final string

private string

应用程序崩溃。所以问题是,如何将静态变为动态?我想将变量放入私有静态或如何将私有静态更改为类似但不会导致应用程序崩溃?

【问题讨论】:

  • 我假设您知道静态成员和实例成员之间的区别。检查使用该变量的所有位置。如果它在静态上下文中的任何地方使用,则保持静态,如果不是,则需要在静态成员中访问它,创建一个本地实例并调用该值
  • 您可以尝试在 static 块中初始化它。我不太了解它们以及它们内部允许什么,但值得一试。
  • Stultuske :问题是,在这个源应用程序中有大量的 Java。我无法手动检查。但如果有必要会尝试。扎尔:是的。好主意。你能给出一些简单的代码吗?我是 java 新手

标签: java android eclipse android-studio


【解决方案1】:

在 Java 中,

static : 当一个变量用关键字“static”声明时,它被称为“类变量”。所有实例共享同一个变量副本。类变量可以直接用类访问,不需要创建实例。

  • 使用:当你要声明一个变量,它的值被所有对象操作时,你可以使用它。

final : 如果你将任何变量设为final,你就不能改变final变量的值(它将是常量)。

  • 用途:当你想定义一个字段时,它的值不能改变。

现在我们将 static 和 final 一起使用在我们想要用于该类的每个对象并且不允许更改它的值的变量中。

private static final String URL= newcommon;

在这里,您正在为最终字段分配值,因此编译器会出错。 在这里使用局部变量。

把你的代码改成

EditText url = (EditText)findViewById(R.id.edt_test);
        String newcommon = (String)url.getText().toString();
        String newURL=YourClass.URL+newcommon;

如果你想在其他任何地方使用这个变量,然后把这个变量传递到那里。 这是常规做法。

【讨论】:

  • 我听到了你说的,但我无法表达编码。例如,你能给我简单的代码吗?
  • @sailornoob :你到底想做什么?你想在雅虎网址末尾的edittext中附加字符串吗?
  • 是的,我想创建自己的 wordpress android 应用程序。我从premium.wpmudev.org/blog/ios-android-retirement 得到源代码。它只加载静态wordpress url。检查此代码pastebin.com/6x7EacMA
  • 我知道。这就是为什么我问不同的情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多