Type无法从类型View对静态方法setVisibility(int)进行静态引用

时间:2012-09-06 22:23:35

标签: java android

我在Eclipse中不断收到以下错误:

  

Type无法从类型View

中对非静态方法setVisibility(int)进行静态引用

我的代码是:

package com.example.testing;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

public void onLoveButtonClicked(View view) {
    TextView haikuTextView = (TextView) findViewById(R.id.haikuTextView);
    TextView.setVisibility(View.VISIBLE); //error here
}
 }

我只是java的初学者,所以我不知道是什么导致了这个问题。我已经用Google搜索了错误,但我没有得到任何可以帮助我的信息。

3 个答案:

答案 0 :(得分:0)

您需要使用:

haikuTextView.setVisibility(View.VISIBLE); 

TextView是类,haikuTextView是您的变量。您无法更改整个班级的可见性。但您可以更改变量的可见性。


当你写道:

<TextView
    android:id="@+id/haikuTextView"
    ... />

您创建了TextView类的一个实例。您可以创建TextView类的许多实例,但是当您想要在一个实例中更改某个特定的某些功能时,您必须指定要更改的TextView

当您撰写TextView.setVisibility()时,您尝试更改每个 TextView。现在,TextView类没有方法setVisibility()来更改每个TextView,但它确实有setVisibilty()来更改一个实例。< / p>

<强>因此
当您尝试使用TextView访问每个TextView.setVisibility()时,这是一个“静态参考”,但就像我说的那样,没有方法可以调用setVisibility() 每个 { {1}}。

如果使用TextView更改一个实例的可见性,这将起作用,因为这是“非静态方法”。

答案 1 :(得分:0)

扩展Sam的答案:

TextView是一个类;它也是View类的子类。当你引用类的静态成员时,你可以使用“classname.method(...)”或“classname.field”;当你说“TextView.setVisibility”时,你正在对“View”类中的方法“setVisibility”进行“静态引用”,该类由TextView类继承。因此,错误消息:无法从类型View对静态方法setVisibility(int)进行静态引用。因为setVisibility方法不是静态方法;这是一种普通的方法。

必须相对于类的特定实例引用普通方法。由于haikuTextView是TextView的一个实例;你可以说:

haikuTextView.setVisibility(View.VISIBLE);

这是清楚的吗?

答案 2 :(得分:0)

应该是:

textView.setVisibility(View.VISIBLE);//A small t instead of a capital T.

最好的运气