在片段之间传递数据:屏幕重叠

时间:2013-08-15 13:26:56

标签: android android-fragments

我的数据在两个片段之间传递,如下所示:

Fragment newFragment = new NewFragment();
Bundle data = new Bundle();
data.putString("number", number[1]);
newFragment.setArguments(data);

getFragmentManager().beginTransaction().add(android.R.id.content, newFragment).attach(newFragment).commit();

我也是这样试过的:

Fragment newFragment = new NewFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction;
Bundle data = new Bundle();
data.putString("number", number[1]);
newFragment.setArguments(data);
transaction.replace(android.R.id.content, newFragment);
transaction.addToBackStack(null);

// Commit the transaction
transaction.commit();

第一种方式传递数据但仍然与屏幕重叠,第二种方式不传递数据并重叠屏幕。提交事务后,我看到我的选项卡仍然在第二个,当它应该在第一个时。 (我想,因为我正在替换它,这就是原因)。

有没有办法将数据传递给另一个片段并让它转到另一个片段选项卡而不重叠?

以下是我通常在片段之间切换的方法

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
     mFragment = new CurrentFragment();
     ft.add(android.R.id.content, mFragment);
     ft.attach(mFragment);      
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    ft.remove(mFragment);
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    // TODO Auto-generated method stub

}

PS我按下按钮进行数据传输。

由于

更新

两种方式都有效。 NewFragment方面的东西。但它们仍然重叠

2 个答案:

答案 0 :(得分:0)

我刚刚通过我的MainActivity传递数据

MainActivity main = (MainActivity)getActivity();
Button alertPhoneChoice = (Button)vi;
//phone[1] is the string im passing
main.number = number[1];
main.getActionBar().setSelectedNavigationItem(0);

答案 1 :(得分:0)

嗯,无论如何,我会发布你的问题答案。

  1. 重叠:

    设置片段视图的背景,这将隐藏。切换时,替换片段。

  2. 传递数据:

    在我的实践中,我将使用一个带有public void setData(Object data)方法的Fragment子类,调用此方法并在替换或添加到事务之前传递数据。