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

时间:2015-09-04 06:16:39

标签: java android eclipse android-studio

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

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

我希望将yahoo转换为来自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

应用程序崩溃了。所以问题是,如何使静态变为动态?我想把变量放在私有静态或如何将私有静态更改为某些东西,但它不会导致应用程序崩溃?

1 个答案:

答案 0 :(得分:0)

在Java中,

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

  • 使用:如果要声明一个变量,其值由所有对象操作,那么您可以使用它。

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

  • 使用:如果要定义字段,则无法更改其值。

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

private static final String URL= newcommon;

在这里,您要为final字段赋值,因此Compiler会给出错误。 在这里使用局部变量。

将您的代码更改为

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

你想在其他任何地方使用这个变量,然后在那里传递这个变量。 这是传统做法。