Android.content.res.Resources $ NotFoundException в setImageResource

Я работаю над приложением, в котором у меня есть recyclerview во фрагменте и viewpager в другом действии, поэтому теперь я передаю изображение из recyclerview в viewpager, но проблема в том, что когда я нажимаю на recyclerview, я получаю исключение ресурс не найден.

Я искал это в Интернете и нашел этот ТАК вопрос, но он не решает проблему, поскольку просто предлагает использовать String.valueof, а я не могу сделать это в setImageresource.

Поэтому я не понимаю, в чем я ошибаюсь, поэтому, пожалуйста, кто-нибудь может помочь мне здесь. Итак, вот код для recyclerview

  class VH extends RecyclerView.ViewHolder implements View.OnClickListener{
            ImageView iv;
            TextView tv;
            HWRatioContainer ivc;
            Context context;
            int[] images;
            CustomButton top_recycler_button;
            public VH(View itemView,Context context,int[] images) {
                super(itemView);
                iv = (ImageView) itemView.findViewById(R.id.iv);
                this.context = context;
                this.images = images;
                top_recycler_button = (CustomButton)itemView.findViewById(R.id.top_recycler_button);
                itemView.setOnClickListener(this);
                //tv = (TextView) itemView.findViewById(R.id.tv);
                ///ivc = (HWRatioContainer) itemView.findViewById(R.id.ivc);
               /*ivc.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                    @Override
                    public void onGlobalLayout() {
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                            ivc.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                        } else {
                            ivc.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                        }
                        ivc.setTranslationX(ivc.getWidth() >> 4);
                    }
                });*/

            }

            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context,DetailsActivity.class);
                intent.putExtra("slider_image",images[getAdapterPosition()]);
                intent.putExtra("transition_name", ViewCompat.getTransitionName(iv));

                Pair<View,String> pair = Pair.create((View)iv,iv.getTransitionName());
                ActivityOptionsCompat compat = ActivityOptionsCompat.makeSceneTransitionAnimation
                        ((Activity)context,pair);
                context.startActivity(intent,compat.toBundle());
            }
        }

и вот код для viewpager

 @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.custom_dots_layout,null);
        ImageView imageView = (ImageView)view.findViewById(R.id.detail_viewpager_image);
        Intent intent  = new Intent();
        imageView.setImageResource(intent.getIntExtra("slider_image",1));


        ViewPager viewPager1 = (ViewPager)container;
        viewPager1.addView(view,0);
        return view;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        ViewPager viewPager = (ViewPager)container;
        View view =  (View)object;
        viewPager.removeView(view);
    }
}

Вы устанавливаете строковое значение как массив целых чисел, поэтому возникает ошибка.

Na-In Hae 25.05.2018 13:25

Итак, как мне получить доступ к ресурсу изображения @Sam

cooldev 25.05.2018 13:27
Intent intent = new Intent(); - Это не Intent, с которого был запущен ViewPagerActivity, так что на нем не будет вашего лишнего. Вам необходимо вызвать в getIntent() на Activity.
Mike M. 25.05.2018 13:27

но мое изображение находится в окне просмотра, так как мне установить ресурс изображения для просмотра в действии @MikeM.

cooldev 25.05.2018 13:33

Вы можете добавить параметр int в конструктор PagerAdapter или создать для него метод установки и т. д. Я не совсем уверен, почему вы используете ViewPager для одного образа.

Mike M. 25.05.2018 13:36

Ааа ... как указал @ MikeM., вы намеренно никуда не пойдете. Общие предпочтения могут быть .. можете попробовать.

Na-In Hae 25.05.2018 13:36

Спасибо @MikeM. Я сделал, как вы предложили, и это сработало.

cooldev 25.05.2018 13:45

@MikeM. у меня есть еще одна проблема, не могли бы вы мне что-нибудь предложить?

cooldev 25.05.2018 13:48

Возможно, если относительно быстро.

Mike M. 25.05.2018 13:51

На самом деле я сделал еще один recyclerview в другой деятельности и использовал linearsnaphelper, используя этот SO post stackoverflow.com/questions/29134094/ ... но теперь он не рассматривает последний и первый элемент в recyclerview, поэтому я не знаю, что мне делать, чтобы центрировать каждый элемент, например viewpager, можешь предложить мне что-нибудь @MikeM.

cooldev 25.05.2018 13:56

Оо, вероятно, понадобится еще один вопрос, но вы пробовали PagerSnapHelper вместо этого? Я еще не использовал его, поэтому не уверен, что он решит вашу проблему, но он был создан специально для имитации ViewPager, поэтому я надеюсь, что это так.

Mike M. 25.05.2018 14:01

Да @MikeM. Я тоже использовал PagerSnaphelper, но все же я не работаю как viewpager

cooldev 25.05.2018 14:03

Да, извините, для этого вам придется задать новый вопрос. Некоторое время назад я использовал LinearSnapHelper только один или два раза, и я никогда не использовал PagerSnapHelper, поэтому я действительно не смог бы ничего предложить.

Mike M. 25.05.2018 14:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
13
208
0

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