我在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搜索了错误,但我没有得到任何可以帮助我的信息。
答案 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.
最好的运气