1

我如何獲得TopFreeFragment.java中Tab的文本/標題?在Android中獲取片段Java內的標籤的文本/標題

我想知道哪個選項卡被選中,並相應地加載web視圖。我怎樣才能做到這一點?

我已經嘗試使用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); String title = getTitle(); Toast.makeText(getActivity(),「」+ title,Toast.LENGTH_SHORT).show(); }' 這裏的烤麪包片在選中標籤時會給出2個輸出(如這裏「TUESDAY」和「WEDNESDAY」) – akkk

+0

哪部分不工作?嘗試將該代碼添加到'onCreateView()'方法而不是'onActivityCreated()'。 – omkarmoghe

+0

'onCreateView()' – akkk