使用Bundle将数据从Activity发送到Fragment而不提交Fragment事务

时间:2016-08-09 10:47:57

标签: java android android-fragments android-bundle

我知道可以使用Bundle将数据从Activity传输到另一个Fragment。我做了一些研究,我发现只有当Activity将片段事务提交到必须发送数据的片段时,Bundle才有效。

我的问题是:在没有提交片段交易的情况下,有什么方法可以将活动中的数据发送到另一个片段?

我附上了一张解释该情景的图片:
  Problem Scenario

以下是主要活动(User.java):

  protected void onCreate(Bundle savedInstanceState)
{
    ActionBar ab = getSupportActionBar();
    ab.hide();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user);

    TextView txt = (TextView) findViewById(R.id.textView5);
    Intent intent = getIntent();
    String Name  = intent.getStringExtra("UserName");
    txt.setText("Logged in as "+Name);

    Bundle bundle = new Bundle();
    bundle.putString("message", Name );
    user_profile up = new user_profile(); //This is the Fragment where I want to send data(which is "Name")
    up.setArguments(bundle); 

    user_home uh = new user_home(); //This is the Fragment that is added
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.add(R.id.fragment_container,uh);
    ft.commit();
}   

这是我要发送数据的第二个活动(称为“user_profile.java”)

Bundle bundle2 = this.getArguments();
    String N = bundle2.getString("message");
    Toast.makeText(getContext(), N , Toast.LENGTH_SHORT).show();    

除了使用bundle之外,有什么办法可以在活动和片段之间发送?

2 个答案:

答案 0 :(得分:1)

我不确定您要准确传递哪种数据..但这可以帮助您https://github.com/greenrobot/EventBus

答案 1 :(得分:0)

在这种情况下我做的是

  1. 在活动

  2. 中创建一个界面
  3. 在Fragment

  4. 中实现该界面
  5. 传递该数据,它将在片段内的接口方法中接收,并且您也知道它何时被接收。

  6. Google已经演示了片段到活动的通信,只需检查该代码并按照我在此处的说明进行片段通信活动。

    https://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity