2

我有两个片段,在单独的类中声明 - AFragment和BFragment。我的MainActivity看起来有点像这样:在两个片段之间传递数据

public class MainActivity extends SherlockFragmentActivity implements ActionBar.TabListener 
{  
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    ActionBar.Tab firstTab = getSupportActionBar().newTab().setText("Fragment A");   
    ActionBar.Tab secondTab = getSupportActionBar().newTab().setText("Fragment B"); 

    SherlockFragment firstFragment = new AFragment(); 
    SherlockFragment secondFragment = new BFragment(); 

    firstTab.setTabListener(this); 
    secondTab.setTabListener(this); 

    getSupportActionBar().addTab(firstTab); 
    getSupportActionBar().addTab(secondTab); 
    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    switch (tab.getPosition()) 
    { 
    case 0: 
     ft.replace(R.id.fragment_container, new AFragment()); 
     break; 
    case 1: 
     ft.replace(R.id.fragment_container, new BFragment()); 
     break; 
    } 
    Toast.makeText(this, tab.getText(), Toast.LENGTH_LONG).show();  
    } 
    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
    } 
} 

我的问题是,我该如何传递一个变量 - 比如一个整数 - 我的两个片段之间?例如,我会在第一个片段中按下一个按钮,并在第二个TextView中出现一个特定的整数。

+0

你应该用'[android-actionbar]'而不是'[actionbar]':)来标记这个:) –

回答

2

碎片意味着被重复使用......也就是说,两个碎片应该是而不是之间直接传递数据。相反,您应该在活动中定义一个callback method。这将确保您可以在您的应用程序中的其他应用程序(以及您制作的其他应用程序)中重新使用您的片段。

+0

谢谢!我发现他们已经给出了一些难以理解的例子,但是:(特别是因为我没有使用ListFragment。你能给我一个绝对的基本例子,比如说按钮吗?对不起,这样一个noob。: ) –