0

Ich arbeite auf ViewPager mit TabsPagerAdapter, ich habe erfolgreich zwei Registerkarten wie a und b erstellt. Wenn ich auf die Schaltfläche klicke, wird meine Schaltfläche in einer Registerkarte angezeigt.Tab-Fragment -Tab ändert sich mit Button-Aktion in der Seite das Fragment

Haupttätigkeit ist -

private ViewPager viewPager; 
private TabsPagerAdapter mAdapter; 
private ActionBar actionBar; 
// Tab titles 
private String[] tabs = { "Top Rated", "Games" }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Initilization 
    viewPager = (ViewPager) findViewById(R.id.pager); 
    actionBar = getActionBar(); 
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

    viewPager.setAdapter(mAdapter); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);   

    // Adding Tabs 
    for (String tab_name : tabs) { 
     actionBar.addTab(actionBar.newTab().setText(tab_name) 
       .setTabListener(this)); 
    } 

    /** 
    * on swiping the viewpager make respective tab selected 
    * */ 
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int position) { 
      // on changing the page 
      // make respected tab selected 
      actionBar.setSelectedNavigationItem(position); 
     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
     } 
    }); 
} 

@Override 
public void onTabReselected(Tab tab, FragmentTransaction ft) { 
} 

@Override 
public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    // on tab selected 
    // show respected fragment view 
    viewPager.setCurrentItem(tab.getPosition()); 
} 

@Override 
public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
}} 

Tabpageadaper ist -

public class TabsPagerAdapter extends FragmentPagerAdapter { 

public TabsPagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int index) { 

    switch (index) { 
    case 0: 
     // Top Rated fragment activity 
     return new TopRatedFragment(); 
    case 1: 
     // Games fragment activity 
     return new GamesFragment(); 
    case 2: 
     // Movies fragment activity 
     return new MoviesFragment(); 
    } 

    return null; 
} 

@Override 
public int getCount() { 
    // get item count - equal to number of tabs 
    return 3; 
} 

}

My Button Hoch bewertet Registerkarte platziert wird, wie unten gezeigt -

public class TopRatedFragment extends Fragment { 
private int currentPage; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false); 
    Button b1=(Button)rootView.findViewById(R.id.button); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
     } 
    }); 
    return rootView; 
} 

}

Wenn ich oben auf den Knopf klicke, muss ich den Spiele-Tab öffnen. Danke im Voraus.

Antwort

0

Sie viewPager.setCurrentItem(position); verwenden können viewPager Zielseite

so setzen diese Methode in Ihrem Activity

public void chooseTab(int position){ 
    viewPager.setCurrentItem(position); 
} 

und dann können Sie es von jedem Fragment wie diese

((MainActivity) getActivity()).chooseTab(0) 

rufen wählen Sie einfach Übergeben Sie die Zielregisterkartenposition

0

In Ihrem MainActivity eine öffentliche Methode hinzufügen -

public void selectFragment(int position){ 
    viewPager.setCurrentItem(position, true); 
    // true is to animate the transaction 
} 

in Sie dann TopRatedFragment b1.setOnClickListener Satz dieser Code unten -

((MainActivity)getActivity()).selectFragment(1); //1 is second position 
0

Um Tab/Fragment zu ändern Sie viewPager.setCurrentItem() Methode verwenden können.

  1. schreiben public Methode in Ihrem MainActivity.java wie unten:

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
    
        ................ 
        ........................ 
    } 
    
    public void selectTab(int position) { 
        viewPager.setCurrentItem(position); 
    } 
    
  2. Verwenden selectTab() Methode von Ihrem TopRatedFragment.javaGamesFragment auszuwählen.

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) { 
    
        View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false); 
        Button b1=(Button)rootView.findViewById(R.id.button); 
        b1.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View view) { 
          ((MainActivity)getActivity()).selectTab(1); // 1 for GamesFragment 
         } 
        }); 
    
        return rootView; 
    } 
    
Verwandte Themen