2017-06-08 7 views
0

Ich frage mich, ob es eine Möglichkeit gibt, den TabLayout von einem Fragment zuzugreifen.Android get tabLayout von einem Fragment

Ich erkläre meine TabLayout unten und ich deaktiviere alle Registerkarten.

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
tabLayout.setupWithViewPager(mViewPager); 

LinearLayout tabStrip = ((LinearLayout)tabLayout.getChildAt(0)); 
    for(int i = 0; i < tabStrip.getChildCount(); i++) { 
     tabStrip.getChildAt(i).setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       return true; 
      } 
     }); 
    } 

Was ich tun möchte, ist in der Lage, sie in einem Fragment in einem ClickListener zu aktivieren.

Ich bin mir nicht sicher, ob ich das tabLayout statisch deklarieren und darauf zugreifen soll oder ob es eine korrekte Vorgehensweise gibt.

Ich entschuldige mich, wenn ich es nicht richtig erkläre - immer noch ein wenig neu für Android.

Antwort

1

Oberfläche Verwenden zwischen Fragment und Aktivität zu kommunizieren, für die Proben

Schnittstelle erstellen.

public interface OnFragmentInteractionListener { 
    // TODO: Update argument type and name 
    void onClickToEnableTab(); 
} 

implementieren Sie es in Aktivität. Können Sie den Code ermöglichen, Ihre Registerkarte

public class Activity implement OnFragmentInteractionListener{ 
    @Override 
    public void onClickToEnableTab() { 
     // TODO : Enable you tab layout 
    } 
} 

in Fragment

public class YourFragment extends Fragment { 
private OnFragmentInteractionListener mListener; 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if (context instanceof OnFragmentInteractionListener) { 
      mListener = (OnFragmentInteractionListener) context; 
     } else { 
      throw new RuntimeException(context.toString() 
       + " must implement OnFragmentInteractionListener"); 
     } 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 
} 

Und dann, in Ihrem Fragment innerhalb onClickListenner Sie anrufen können

mListener.onClickToEnableTab(); 
1

Das Deklarieren von tablayout als statische Variable ist eine schlechte Möglichkeit, das Szenario zu behandeln. Sie können stattdessen die Schnittstelle verwenden, um dies zu erreichen. Bitte schauen Sie sich den offiziellen Link zur Kommunikation zwischen Fragment und Aktivität an, es ist ziemlich einfach. https://developer.android.com/training/basics/fragments/communicating.html

+0

Vielen Dank für die Informationen! Es hat wirklich geholfen! – Torewin

Verwandte Themen