Java 无法对非静态方法进行静态引用-Android TabbedActivity
我是Java和Android开发新手,无法修复错误。我想用变量更改Java 无法对非静态方法进行静态引用-Android TabbedActivity,java,android,Java,Android,我是Java和Android开发新手,无法修复错误。我想用变量更改TextView的文本,但视图类是静态的。代码如下: public static class FirstTab extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = infl
TextView
的文本,但视图类是静态的。代码如下:
public static class FirstTab extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.first_tab, null);
new Thread() {
public void run() {
MCQuery mcQuery = new MCQuery(serverAddress, 25565);
QueryResponse response = mcQuery.basicStat();
int Onlineplayers = response.getOnlinePlayers();
Log.d("MCQuery", "" + Onlineplayers + " Online Players");
}
}.start();
TextView onlinePlayersView = (TextView) findViewById(R.id.online_players);
onlinePlayersView.setText(Onlineplayers);
return v;
}
}
错误是:“无法从类型活动对非静态方法findViewById(int)
进行静态引用”
如何解决这个问题?现在我要做一个大胆的猜测:这是另一个类声明中的嵌套类,findViewById()方法是顶级类,但不是静态的? 如果这是正确的,那就是问题所在。
当您定义一个内部类静态时,它就变成了一个独立的顶级类。因为方法findViewById()不是静态的,所以它需要顶级声明类的实例对象,但是类FirstView现在是静态的-一个完全独立的类,这意味着要实例化它不需要顶级类的实例。现在这就导致了问题——FirstView不需要顶级类的对象,而findViewById()需要顶级类的对象。若要修复此问题,请将FirstView更改为非静态,或将findViewById()更改为静态,或解释您在代码之外到底在做什么,以及您的目标是什么 现在我要做一个大胆的猜测:这是另一个类声明中的一个嵌套类,findViewById()方法是顶级类,但不是静态的? 如果这是正确的,那就是问题所在。 当您定义一个内部类静态时,它就变成了一个独立的顶级类。因为方法findViewById()不是静态的,所以它需要顶级声明类的实例对象,但是类FirstView现在是静态的-一个完全独立的类,这意味着要实例化它不需要顶级类的实例。现在这就导致了问题——FirstView不需要顶级类的对象,而findViewById()需要顶级类的对象。若要修复此问题,请将FirstView更改为非静态,或将findViewById()更改为静态,或解释您在代码之外到底在做什么,以及您的目标是什么 尝试使用v.findviewbyd()并查看是否有帮助…尝试使用v.findviewbyd()并查看是否有帮助。。。