Ошибка: нестатический метод "findViewById (int)" не может ссылаться на статический контекст
Я использую Android Studio (Beta), и, используя этот код java в 'onCreateView(), я получаю сообщение об ошибке.
ListView listView = (ListView) findViewById(R.id.someListView);
Это ошибка:
Non-static method 'findViewById(int)' cannot be referenced from a static context
Как это исправить?
Ответы
Ответ 1
Предполагая, что внутри объекта есть внутренний класс статического фрагмента: вы пытаетесь вызвать активность findViewById()
, которую вы не можете сделать в статическом внутреннем классе, который не содержит ссылки на родителя.
В onCreateView()
вам нужно вызвать его в корневом представлении, которое вы просто надули, например
ListView listView = (ListView) rootView.findViewById(R.id.someListView);
Ответ 2
onCreateView()
не должен быть статическим (я предполагаю, что вы определяете его в классе Activity), поэтому вы должны делать что-то неправильно.
Ответ 3
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_layout, container, false);
ListView listView = (ListView) view.findViewById(R.id.listviewID);
context = getActivity();
return view;
}
Теперь вы можете реализовать это... Используйте переменную view для доступа к объектам xml ui в oncreateView и getActivity(). findViewById (...) для доступа к другому методу onCreateView().
Ответ 4
Внутри класса Activity
static ListView listView;
listView = (ListView) this.findViewById(R.id.someListView);
ИЛИ
для создания внутри fragmentClass (статический)
static ListView listView;
listView = (ListView) getActivity().findViewById(R.id.someListView);