我是Java和Android开发的新手,我无法修复错误。我想用变量更改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;
}
}
错误是:“无法从类型Activity”
中对非静态方法findViewById(int)
进行静态引用
我该如何解决这个问题?
答案 0 :(得分:4)
现在我做了一个疯狂的猜测:这是一个其他类的声明中的嵌套类,方法findViewById()属于顶级类但不是静态的? 好吧,如果这是正确的,那就是问题。 当你定义一个内部类静态时,它就变成了一个单独的顶级类。因为方法findViewById()不是静态的,所以它需要顶层声明的类的实例对象,但类FirstView现在是静态的 - 一个完全独立的类,这意味着要实例化它不需要顶级实例类。现在这导致了问题 - FirstView不需要顶级类的对象,而findViewById()确实需要一个。要修复它,要么将FirstView更改为非静态,要么将findViewById()更改为静态,或者解释您在此代码之外的具体操作以及您的目标是什么。