1

Как я могу получить текст/заголовок Tab внутри TopFreeFragment.java?Получить текст/Название вкладки внутри фрагмента Java в Android

Я хочу знать, какая вкладка выбрана и, соответственно, загрузить веб-просмотр. Как я могу это сделать?

Я пробовал использовать sharedPreferences, но это не правильный путь, и он не работает должным образом.

Здесь я хочу показать Тост заголовка вкладки внутри 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); 
} 
} 

ответ

0

Я хотел бы написать метод newInstance() и метод getTitle() в вашем фрагменте и передать имя в через Bundle.

Что-то вроде этого:

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"); 
    } 
} 

Затем добавьте фрагменты вашей viewPagerAdapter так:

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) { 

      } 
     }); 
} 

Чтобы получить название фрагмента из фрагмента, просто позвоните getTitle(). Вы можете передать все, что хотите, чтобы заголовок был как аргумент метода newInstance(String title).

+0

он работает частично 'общественного недействительными onActivityCreated (@Nullable Пачка savedInstanceState) { super.onActivityCreated (savedInstanceState); Строка title = getTitle(); Toast.makeText (getActivity(), "" + title, Toast.LENGTH_SHORT) .show(); } ' Здесь тост дает 2 выхода, когда выбрана вкладка (как здесь«ВТОРНИК»и«СРЕДА») – akkk

+0

Какую часть не работает? Попробуйте добавить этот код к методу 'onCreateView()' вместо 'onActivityCreated()'. – omkarmoghe

+0

То же самое происходит в 'onCreateView()' – akkk