1

Wie kann ich Text/Titel von Tab innerhalb TopFreeFragment.java bekommen?Get Text/Titel der Registerkarte in Fragment Java in Android

Ich möchte wissen, welche Registerkarte ausgewählt ist und dementsprechend die Webansicht laden. Wie kann ich das machen?

Ich habe versucht mit sharedPreferences, aber das ist nicht der richtige Weg und es funktioniert auch nicht richtig.

Hier möchte ich Toast des Reiters zeigen, in der TopFreeFragment.java

public class YouTube_Toolbar extends AppCompatActivity { 

Toolbar toolbar; 
TabLayout tabLayout; 
ViewPager viewPager; 
ViewPagerAdapter viewPagerAdapter; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.you_tube__toolbar); 

    toolbar = (Toolbar) findViewById(R.id.toolBar); 
    setSupportActionBar(toolbar); 

    tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
    viewPager = (ViewPager) findViewById(R.id.viewPager); 

    viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    viewPagerAdapter.addFragments(new TopFreeFragment(), "TUESDAY"); 
    viewPagerAdapter.addFragments(new TopFreeFragment(), "WEDNESDAY"); 
    viewPagerAdapter.addFragments(new TopFreeFragment(), "THURSDAY"); 
    viewPagerAdapter.addFragments(new TopFreeFragment(), "FRIDAY"); 
    viewPager.setAdapter(viewPagerAdapter); 
    tabLayout.setupWithViewPager(viewPager); 
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
     } 

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

     } 

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

     } 
    }); 
} 

public class TopFreeFragment extends Fragment { 

WebView webView; 
Button download; 

public TopFreeFragment() { 
    // Required empty public constructor 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) 

    return inflater.inflate(R.layout.fragment_top_free, container, false); 
} 
} 

Antwort

0

Ich würde ein newInstance() Verfahren und eine getTitle() Methode in Ihrem Fragment schreiben und den Namen passieren in durch eine Bundle.

Etwas wie folgt aus:

TopFreeFragment.java

public class TopFreeFragment extends Fragment { 
    WebView webView; 
    Button download; 

    public TopFreeFragment() { 
     // Required empty public constructor 
    } 

    public static TopFreeFragment newInstance(String title) { 
     TopFreeFragment fragment = new TopFreeFragment(); 

     Bundle args = new Bundle(); 
     args.putCharSequence("title", title); 
     fragment.setArguments(args); 

     return fragment; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) 

     return inflater.inflate(R.layout.fragment_top_free, container, false); 
    } 

    public String getTitle() { 
     Bundle args = getArguments(); 
     return args.getCharSequence("title", "NO TITLE FOUND"); 
    } 
} 

fügen Sie dann die Fragmente zu Ihrem viewPagerAdapter wie folgt aus:

YouTube_Toolbar.java

public class YouTube_Toolbar extends AppCompatActivity { 

    Toolbar toolbar; 
    TabLayout tabLayout; 
    ViewPager viewPager; 
    ViewPagerAdapter viewPagerAdapter; 

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

     toolbar = (Toolbar) findViewById(R.id.toolBar); 
     setSupportActionBar(toolbar); 

     tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
     viewPager = (ViewPager) findViewById(R.id.viewPager); 

     viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); 
     viewPagerAdapter.addFragments(TopFreeFragment.newInstance("TUESDAY"), "TUESDAY"); 
     viewPagerAdapter.addFragments(TopFreeFragment.newInstance("WEDNESDAY"), "WEDNESDAY"); 
     viewPagerAdapter.addFragments(TopFreeFragment.newInstance("THURSDAY"), "THURSDAY"); 
     viewPagerAdapter.addFragments(TopFreeFragment.newInstance("FRIDAY"), "FRIDAY"); 
     viewPager.setAdapter(viewPagerAdapter); 

     tabLayout.setupWithViewPager(viewPager); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
      } 

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

      } 

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

      } 
     }); 
} 

Um den Titel des Fragments aus dem Fragment zu erhalten, rufen Sie einfach getTitle(). Sie können übergeben, was auch immer der Titel sein soll, als das Argument der newInstance(String title) Methode.

+0

es funktioniert teilweise 'public void onActivityCreated (@Nullable Bundle savedInstanceState) { super.onActivityCreated (savedInstanceState); Zeichenfolge title = getTitle(); Toast.makeText (getActivity(), "" + Titel, Toast.LENGTH_SHORT) .show(); } ' Hier Toast gibt 2 Ausgabe, wenn eine Registerkarte ausgewählt ist (wie hier" DIENSTAG "&" Mittwoch ") – akkk

+0

Welcher Teil funktioniert nicht? Versuchen Sie, diesen Code der 'onCreateView()' - Methode anstelle von 'onActivityCreated()' hinzuzufügen. – omkarmoghe

+0

das gleiche ist der Fall in 'onCreateView()' – akkk

Verwandte Themen