ghasem aria Ответов: 1

Как изменить фон кнопок из другого вида деятельности ?


привет, у меня есть 3 XML-файла макета (в res) с несколькими кнопками . я использую xml-макеты в view pager для основной деятельности в моем приложении ... теперь я хочу изменить фон кнопок , когда мое условие истинно, как это сделать ?
это мое изображение приложения :
[^]
это моя кнопка в XML макете :
<ir.rahgoshafan.alphabetpuzzle.customs.PuzzleButton  
                android:id="@+id/btn_green455"  
                android:layout_width="0dp"  
                android:layout_height="wrap_content"  
                android:layout_weight="0.33"  
                android:onClick="BTN_CLICK"  
                android:background="@drawable/button_red"  
                android:contentDescription="@string/app_name"  
                android:text="?????? ?????"  
                android:textColor="#fff"  
                android:textSize="20sp"  
                android:textStyle="bold" />  

и просмотр пейджера в основной деятельности :
private void init() {  
        ViewPager VIEW_PAGER = (ViewPager) findViewById(R.id.tour_view_pager);  
        DOTS_LAYOUT = (LinearLayout) findViewById(R.id.tour_layout_dots);  
        LAYOUTS = new int[]{R.layout.items_one, R.layout.items_two, R.layout.items_three};  
        addBottomDots(0);  
        TourViewPagerAdapter ViewPagerAdapter = new TourViewPagerAdapter();  
        VIEW_PAGER.setAdapter(ViewPagerAdapter);  
        VIEW_PAGER.addOnPageChangeListener(viewPagerPageChangeListener);  
    }  


Что я уже пробовал:

в основной деятельности попробуйте это сделать :
final Button button = (Button) findViewById(R.id.btn_green455);
button.setBackgroundResource(R.layout.unlock_button);

но ничего не случилось !

David Crow

В вашем ViewPager, каждая страница имеет владельца Fragment- правильно? Я предполагаю, что ... Activity следует отправить сообщение в Fragment это владелец страницы, о которой идет речь.

1 Ответов

Рейтинг:
2

ghasem aria

я попробую это сделать :

private void initViewPager() {
        ViewPager VIEW_PAGER = (ViewPager) findViewById(R.id.viewPager);
        LAYOUTS = new int[]{R.layout.fragment_one, R.layout.fragment_blank};
        TourViewPagerAdapter ViewPagerAdapter = new TourViewPagerAdapter();
        VIEW_PAGER.setAdapter(ViewPagerAdapter);
        VIEW_PAGER.addOnPageChangeListener(viewPagerPageCh  angeListener);
    }
 
    private class TourViewPagerAdapter extends PagerAdapter {
        private LayoutInflater layoutInflater;
 
        TourViewPagerAdapter() {
        }
 
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            try {
                layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View view = layoutInflater.inflate(LAYOUTS[position], container, false);
                Button btn_fragment = (Button)view.findViewById(R.id.btn_fragment);
               // Button btn_fragment_two = (Button)view.findViewById(R.id.btn_fragment_next);
              //  btn_fragment.setOnClickListener(new View.OnClickListener() {
//                    @Override
//                    public void onClick(View v) {
//                        Toast.makeText(getApplicationContext(), "show", Toast.LENGTH_SHORT).show();
//                    }
//                });
//                btn_fragment_two.setOnClickListener(new View.OnClickListener() {
//                    @Override
//                    public void onClick(View v) {
//                        Toast.makeText(getApplicationContext(), "this show 2", Toast.LENGTH_SHORT).show();
//                    }
//                });
                container.addView(view);
                return view;
            } catch (Exception e) {
                return null;
            }
        }
 
        @Override
        public int getCount() {
            return LAYOUTS.length;
        }
 
        @Override
        public boolean isViewFromObject(View view, Object obj) {
            return view == obj;
        }
 
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            View view = (View) object;
            container.removeView(view);
        }
    }
 
    ViewPager.OnPageChangeListener viewPagerPageChangeListener = new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
 
        }
 
        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
 
        }
 
        @Override
        public void onPageScrollStateChanged(int arg0) {
 
        }
    };


но когда вы используете первый фрагмент (кнопки), другие кнопки фрагмента будут скрыты !!?