Ошибка: нестатический метод "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);