2013-03-01 92 views
2

FragmentPagerSupport是一個FragmentActivity類,FragmentA和FragmentB代表2個不同的選項卡。在第一個選項卡中,我有一個EditText和一個按鈕。我的任務是在按鈕點擊需要打開第二個選項卡,並顯示第二個選項卡中的EditText值。我也在使用FragmentStatePagerAdapter。如何更改Android上的按鈕點擊標籤?

下面的代碼是構建標籤的onCreate()FragmentActivity的:

for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 
     actionBar.addTab(actionBar.newTab() 
       .setText(mSectionsPagerAdapter.getPageTitle(i)) 
       .setTabListener(this)); 
    } 

我在FragmentStatePagerAdapter代碼如下:

public Fragment getItem(int position) { 
    Fragment fragment = null; 
    Bundle args = new Bundle();   
    switch (position) { 
    case 0: 
     fragment = FragmentA(); 
     args.putInt(FragmentA.ARG_SECTION_NUMBER, position + 1); 
     fragment.setArguments(args); 
    break; 
    case 1: 
     fragment = new FragmentB(); 
     args.putInt(FragmentB.ARG_SECTION_NUMBER, position + 1); 
     fragment.setArguments(args); 
    break; 
    } 
return fragment; 
} 

我的按鈕點擊FragmentA的代碼如下:

confirmButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 


    } 
} 

現在我卡在這裏。找不到應該在這裏調用第二個選項卡的代碼,並根據tab1 EditText值顯示值。

回答

8

假設您的ViewPager名爲mPager:

public void onClick(View view) 
{ 
    mPager.setCurrentItem(1); // Change to page 1, i.e., FragmentB 
} 

我建議詳細閱讀this培訓頁面。它涉及到用於將信息從片段傳遞到片段的一些策略(通常通過讓活動實現片段可以調用的接口)。

這真的取決於你想要你的片段是多麼耦合。你當然可以使用類似

((FragmentB)getActivity().getSupportFragmentManager().findFragmentByTag(
    "android:switcher:" + pager.getId() + ":1")).setExitText(text) 

將文本從FragmentA傳遞給FragmentB,而是緊密結合的片段,彼此的ViewPager活動包含的內容。

我建議

  1. 讓您的活動實現一個包含一個方法,如goToFragmentB(字符串exitText)
  2. 調用此方法可在FragmentA的onClick
  3. 有無goToFragmentB接口:
    • 調用FragmentB中的setExitText(使用上面的findFragmentByTag使用每個ViewPager source的奇數標籤)
    • Set尋呼機FragmentB
+0

謝謝,但我將如何得到ViewPager在FragmentA? – ray 2013-03-01 05:43:22

+1

getActivity()。findViewById(R.id.pager)應該可以工作(使用ViewPager的任何ID)。 – ianhanniballake 2013-03-01 05:51:32

+0

非常感謝。真的行。現在請爲我的另一個問題提供解決方案 - 我如何將第一個選項卡ExitText(用戶輸入)的值傳遞給第二個選項卡? – ray 2013-03-01 05:58:14