我正在使用Android Studio (测试版),在'onCreateView()‘中使用这段java代码时,我得到了一个错误。
ListView listView = (ListView) findViewById(R.id.someListView);
这是错误:
Non-static method 'findViewById(int)' cannot be referenced from a static context
我该如何解决这个问题?
发布于 2014-08-18 23:49:15
假设在活动中有一个静态片段内部类:您正在尝试调用活动的findViewById()
,但在不包含对父对象的引用的静态内部类中无法调用。
在onCreateView()
中,你需要在你刚刚膨胀的根视图上调用它,例如
ListView listView = (ListView) rootView.findViewById(R.id.someListView);
发布于 2014-08-18 23:40:19
onCreateView()
不应该是静态方法(我假设您是在Activity类中定义它的),所以您一定是做错了什么。
发布于 2018-06-08 07:10:49
如果在静态AsyncTask或任何其他类中使用该活动,则可以将该活动作为参数传递给方法或构造函数,例如:
活动onCreate:
//Pass activity variable (this)
new Main2Activity.MyTask().execute(this);
类内部活动:
private static class MyTask extends AsyncTask<Object, Void, String> {
Main2Activity activity;
@Override
protected String doInBackground(Object... params) {
activity = (Main2Activity)params[0];
....
}
@Override
protected void onPostExecute(String str) {
// Use parameter activity passed to class
WebView webView = activity.findViewById(R.id.web_view);
webView.loadData(str, "text/html; charset=UTF-8", null);
}
https://stackoverflow.com/questions/25367060
复制相似问题