我知道可以使用Bundle将数据从Activity传输到另一个Fragment。我做了一些研究,我发现只有当Activity将片段事务提交到必须发送数据的片段时,Bundle才有效。
我的问题是:在没有提交片段交易的情况下,有什么方法可以将活动中的数据发送到另一个片段?
我附上了一张解释该情景的图片:
以下是主要活动(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之外,有什么办法可以在活动和片段之间发送?
答案 0 :(得分:1)
我不确定您要准确传递哪种数据..但这可以帮助您https://github.com/greenrobot/EventBus
答案 1 :(得分:0)
在这种情况下我做的是
在活动
在Fragment
传递该数据,它将在片段内的接口方法中接收,并且您也知道它何时被接收。
Google已经演示了片段到活动的通信,只需检查该代码并按照我在此处的说明进行片段通信活动。
https://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity