Не удается разрешить метод getApplicationContext () в элементе GridView, щелкнув фрагмент

Я создал приложение для Android, например галерею, в которой есть изображения с использованием вкладки фрагмента

Функциональность работает нормально, но когда я добавляю setOnItemClickListener в свой код, появляется ошибка

Ошибка: не удается разрешить метод getApplicationContext ()

вы также можете проверить снимок экрана с ошибкой: http://prntscr.com/kc6zay

Просмотрите мой код и подскажите, как я могу решить эту проблему.

    public class CallFragment extends Fragment {

    @Override
    public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        View view = inflater.inflate(R.layout.fragment_call,container,false);
        GridView gridView = (GridView) view.findViewById(R.id.gridview);
        gridView.setAdapter(new ImageAdapter(view.getContext())); // uses the view to get the context instead of getActivity().

        // Listening to GridView item click
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

                // Launch ImageViewPager.java on selecting GridView Item
                Intent i = new Intent(getApplicationContext(), ImageViewPager.class);

                // Show a simple toast message for the item position
                //Toast.makeText(CallFragment.this, "" + position, Toast.LENGTH_SHORT).show();

                // Send the click position to ImageViewPager.java using intent
                i.putExtra("id", position);

                // Start ImageViewPager
                startActivity(i);
            }
        });
    }



  //  public View onCreateView(LayoutInflater inflater, ViewGroup container,
  //                           Bundle savedInstanceState) {
        // Inflate the layout for this fragment
   //     setHasOptionsMenu(true);
   //     return inflater.inflate(R.layout.fragment_call, container, false);
  //  }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_calls, menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == R.id.action_call) {
            Toast.makeText(getActivity(), "Clicked on " + item.getTitle(), Toast.LENGTH_SHORT)
                    .show();
        }
        return true;
    }
}

это потому, что ни у AdapterView.OnItemClickListener, ни у Fragment нет такого метода

Vladyslav Matviienko 28.07.2018 21:25
1
1
958
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуй это:

Добавьте ниже код в CallFragment

private Context context;

@Override
public void onAttach(Context context) {
    super.onAttach(context);
    this.context = context;
}

В вашем onItemClick

            Intent i = new Intent(context, ImageViewPager.class);

извините, я не понимаю: добавьте код ниже во фрагменте

Ayan Abraiz 28.07.2018 21:31

В вашем CallFragment

prashant17 28.07.2018 21:32

Я пробую ваш код, но когда я тестирую свое приложение и нажимаю на элемент, мое приложение продолжает останавливаться и говорит: закрыть приложение

Ayan Abraiz 28.07.2018 21:34

E / InputEventReceiver: входное событие отправки исключения. E / MessageQueue-JNI: исключение в обратном вызове MessageQueue: handleReceiveCallback E / MessageQueue-JNI: android.content.ActivityNotFoundException: невозможно найти явный класс активности {com.codingdemos.tablayout / com.codingdemos.tablayout.ImageVi‌ ewPager}; Вы указали это действие в своем AndroidManifest.xml?

Ayan Abraiz 28.07.2018 21:38

ImageViewPager - это действие? Убедитесь, что вы добавили его в манифест

prashant17 28.07.2018 21:39

Я добавил свой ImageViewPager в манифест, и теперь он работает. Спасибо.

Ayan Abraiz 28.07.2018 21:42

Вы не начинаете деятельность с getApplicationContext.
Используйте getActivity():

Intent i = new Intent(getActivity(), ImageViewPager.class);

Я пробую ваш код Intent i = new Intent (getActivity (), ImageViewPager.class); но когда я тестирую свое приложение и нажимаю на него, мое приложение продолжает останавливаться и говорит: закрыть приложение

Ayan Abraiz 28.07.2018 21:29
getActivity() может быть нулевым
prashant17 28.07.2018 21:29
getActivity() равен нулю до события onAttach(). После этого это не ноль и, конечно же, не внутри слушателя, который запускается после onAttach()
user8959091 28.07.2018 21:39

Другие вопросы по теме