2017-09-03 1 views
0

J'ai ALr.java class et FragHandler. FragHandler a Tablayout et viewpager. Le code ALR et FragHandler est écrit ci-dessous. Je veux ouvrir l'onglet Paramètres qui est le troisième onglet de FragHandler en cliquant sur ALR i.e. rl.setonclicklisterner en appelant la méthode activatealert.Android - Ouvert 3ème onglet de l'intention tirée de la boîte de dialogue en fragment

MyFragHandler Classe

public class FragHandler extends AppCompatActivity 
    TabLayout tabLayout; 
    Toolbar customtoolbar; 
    SharedPreferences sharedPreferences; 

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

     sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 



     tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     tabLayout.addTab(tabLayout.newTab().setText("1")); 
     tabLayout.addTab(tabLayout.newTab().setText("2")); 
     tabLayout.addTab(tabLayout.newTab().setText("Settings")); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 




     final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     final AlsViewChanger adapter = new AlsViewChanger(getSupportFragmentManager(), tabLayout.getTabCount()); 
     viewPager.setAdapter(adapter); 

     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       viewPager.setCurrentItem(tab.getPosition()); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 

      } 
     }); 


    } 





} 

et mon ALR.java d'où je suis en train d'ouvrir l'onglet 3.

public class ALR extends Fragment { 


    TextView rl, 




    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) throws NullPointerException { 
     View view = inflater.inflate(R.layout.ar, container, false); 



     rl = (TextView) view.findViewById(R.id.reto); 


       rl.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 


        activatealert(); 

       });  
    public void activatealert() { 
     MaterialDialog activateald = new MaterialDialog.Builder(getActivity()) 
       .content("In order to use these services, please click settings and set appropriate options to activate Where R U feature.") 
       .title("Activate Where R U") 
       .positiveColor(Color.BLUE) 
       .negativeColor(Color.RED) 
       .positiveText("Settings") 
       .negativeText("Cancel") 
       .onPositive(new MaterialDialog.SingleButtonCallback() { 
        @Override 
        public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { 
         Intent intent = new Intent(getActivity(),FragHandler.class); 
         intent.putExtra("Settings",2); 
         startActivity(intent); 

        } 
       }) 
       .show(); 
    } 
} 

il ouvre onglets activitiy mais pas d'abord Tab troisième au besoin. Guide de Pls.

Répondre

1

Modifier En fonction de votre code:

retirer le OnTabSelectedListener, vous ne avez pas besoin.

juste ajouter

tabLayout.setupWithViewPager(viewPager); 

Voici le code complet:

public class FragHandler extends AppCompatActivity 
    TabLayout tabLayout; 
    Toolbar customtoolbar; 
    SharedPreferences sharedPreferences; 

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

     sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 

     tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     tabLayout.addTab(tabLayout.newTab().setText("1")); 
     tabLayout.addTab(tabLayout.newTab().setText("2")); 
     tabLayout.addTab(tabLayout.newTab().setText("Settings")); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     final AlsViewChanger adapter = new AlsViewChanger(getSupportFragmentManager(), tabLayout.getTabCount()); 
     viewPager.setAdapter(adapter); 

     tabLayout.setupWithViewPager(viewPager); 
     int tabToSelect = getIntent().getIntExtra("Settings”, 0); 
     viewPager.setCurrentItem(tabToSelect); 
    } 

} 

S'il vous plaît vérifier la

int tabToSelect = getIntent().getIntExtra("Settings”, 0); 

Je supposais si vous vouliez le faire. Changez-le selon que vous n'en avez pas besoin.

Il est difficile de répondre sans beaucoup de détails, mais voici mes quelques suggestions basées sur des hypothèses:

1) Vous souhaitez démarrer une activité FragHandler qui a plusieurs onglets. TabLayout est associé à ViewPager. Dans ce cas, après avoir défini l'adaptateur sur ViewPager, appelez le viewPager.setCurrentItem(2). Si vous avez seulement des onglets, alors vous pouvez essayer tabLayout.getTabAt(2).select(). Cela devrait déclencher votre OnTabSelectedListener où vous pourriez avoir déjà le code pour remplacer le fragment.

2) Le fragment contenant le dialogue est à l'intérieur du même TabLayout où le 3ème onglet que vous demandez est. Dans ce cas, mettre le code suivant dans onClick bouton Paramètres:

// If ViewPager, then make it public in YourActivity 
((YourActivity)getActivity()).viewPager.setCurrentItem(2); 

// If TabLayout without ViewPager, then also make it public 
((YourActivity)getActivity()).tabLayout.getTabAt(2).select(); 

et post le plus de détails possible afin que vous puissiez obtenir la réponse correcte

+0

I corps mis à jour avec plus d'informations. pls lire et guider. comme ni 1 ni 2 cas peuvent aider parce que je n'ai pas tablayout et viewpager dans la classe ALR.java d'où j'appelle l'onglet 3. – Panache

+0

@Panache si j'ai bien compris, le cas 1 est ce dont vous avez besoin. Vous lancez FragHandler Activity depuis ALR.java en passant le drapeau "Settings". maintenant dans onCreate of FragHandler, vous pouvez initialiser votre ViewPager & TabLayout. Juste en dessous de ce code, essayez et vérifiez en ajoutant une ligne comme viewPager.setCurrentItem (2); Cela va programmer votre 3ème onglet sélectionné. –

+0

J'ai ajouté à la fois la classe et de meilleures informations, pls regarder – Panache