【问题标题】:Passing data between fragments: screen overlap在片段之间传递数据:屏幕重叠
【发布时间】:2013-08-15 13:26:56
【问题描述】:

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

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 方面的一些东西。但是它们仍然重叠

【问题讨论】:

  • 那么您的数据在哪里?我的数据是什么意思?
  • @kevinhoo 我编辑了代码。现在数据就在那里
  • 不传递数据是指在 Fragment.onCreateView 中找不到数据吗?
  • 是的。当我查找数据时,捆绑包为空。我更多地问这个问题是为了重叠,但如果你知道这两个都很好
  • 你每次都创建newFragment吗?还是只有一次?重叠是什么意思?

标签: android android-fragments


【解决方案1】:

我只是像这样通过我的 MainActivity 传递数据

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

【讨论】:

  • 是和不是。你让我尝试了每一种可能性。
【解决方案2】:

嗯,不管怎样,我会发布我对你问题的答案。

  1. 重叠:

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

  2. 传递数据:

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

【讨论】:

    猜你喜欢
    • 2019-11-01
    • 2021-03-01
    • 1970-01-01
    • 2016-11-21
    • 2018-01-10
    • 1970-01-01
    • 2019-05-20
    • 2020-10-10
    相关资源
    最近更新 更多