Вызов FragmentDialog в RecyclerViewAdapter

363
30 января 2017, 16:55

Добрый день! Имеется такая ситуация: использую RecyclerView+CardView. Нужно при нажатии на карточку открывать DialogFragment. Для этого в адаптере recyclerview я повесил на CardView слушатель, в котором вызываю DialogFragment(кастомный). Для вызова диалога требуется FragmentManager, для этого я в адаптере сохранил ссылку на активити и из нее получаю менеджер. Ниже код:

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.HeroViewHolder> {
List<Hero> heroes;
MainActivity activity;

@Override
public void onBindViewHolder(HeroViewHolder holder, int position) {
    /*holder.heroName.setText(heroes.get(position).name);
    holder.heroImage.setImageResource(heroes.get(position).image);
    holder.heroDescription.setText(heroes.get(position).description);
    holder.fullDescription.setText(heroes.get(position).fullDescription);*/ не важно
    holder.cv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SupportBlurDialogFragment dialog = new SupportBlurDialogFragment() {
                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                    View v = inflater.inflate(R.layout.dialog_layout, container, false);
                    return v;
                }
            };
            dialog.show(activity.getSupportFragmentManager(), "log");
        }
    });
}

В итоге получаю NullPointerException:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.v4.app.FragmentManager ru.spoketplace.vainstatistic.MainActivity.getSupportFragmentManager()' on a null object reference
                                                                              at ru.spoketplace.vainstatistic.fragments.RVAdapter$1.onClick(RVAdapter.java:59)
                                                                              at android.view.View.performClick(View.java:4789)
                                                                              at android.view.View$PerformClick.run(View.java:19881)
                                                                              at android.os.Handler.handleCallback(Handler.java:739)
                                                                              at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                              at android.os.Looper.loop(Looper.java:135)
                                                                              at android.app.ActivityThread.main(ActivityThread.java:5294)
                                                                              at java.lang.reflect.Method.invoke(Native Method)
                                                                              at java.lang.reflect.Method.invoke(Method.java:372)
                                                                              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
                                                                              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)

В чем может быть ошибка? Заранее спасибо.

Answer 1

У вас переменная activity нигде не инициализируется и остается null. Передайте ссылку на текущую активити через конструктор.

READ ALSO
Конкатенация это плохой способ?

Конкатенация это плохой способ?

В книге вычитал, что приведение int в String с использованием конкатенации, например, где а это int

345
Панель открытых окон

Панель открытых окон

Скажите пожалуйста, как на java server face реализовать панель открытых окон? Строим учетную программу, нужно открыть несколько окон одновременно...

369
Аутентификация в Spring Security

Аутентификация в Spring Security

Разбираюсь с Spring Security(и параллельно пишу веб приложение)Всё работает, но есть пара вопросов

543
Правильно ли я делаю (ViewPager и RecyclerView)

Правильно ли я делаю (ViewPager и RecyclerView)

Просьба помочь с алгоритмом действийЕсть DrawerLayout по нажатию на его пункт отрывается фрагмент-1 в котором присутствует RecyclerView который выводит...

423