Click here to Skip to main content
15,890,186 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
hi, i have 3 XML layout file (in res) with several buttons . i use xml layouts in view pager into main activity in my app ... now i want change buttons background when my condition is true , how do it ?
this my app image :
[^]
this my button in XML layout :
<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" />  

and view pager in main activity :
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);  
    }  


What I have tried:

in main activity try this :
final Button button = (Button) findViewById(R.id.btn_green455);
button.setBackgroundResource(R.layout.unlock_button);

but no happen !
Posted
Updated 22-Nov-17 21:12pm
Comments
David Crow 17-Nov-17 11:17am    
In your ViewPager, each page has an owning Fragment, correct? I'm guessing that the Activity should send a message to the Fragment that owns the page in question.

1 solution

i try this :

Java
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) {
 
        }
    };


but when use first fragment (buttons) other fragment buttons be hide !!?
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900