chr*_*ris 15 android fragment android-fragments fragmentmanager
我在我的应用程序中使用导航抽屉.我有一个MainActivity,其余的是片段.所以问题是假设我有三个片段,如A,B,C.
现在在A我有一个按钮,我从A> B发送数据.
例如putSring("datafrom A","data from A");
现在在B中我从A接收数据.
我在B中有一个按钮,我从B> C发送数据.
例如putSring("datafrom B","data from B");
现在在C中我从B接收数据.
然后,我在C中有一个Button,并从C> B发送数据.
例如putSring("data from C","data from C");
所以,似乎在B中我从两个不同的片段获取数据.我尝试了所有使用活动,它与startActivityforresult配合得很好.但是,当所有碎片都是碎片时我怎么能管理.
Cod*_*lay 56
从B启动片段C时,可以调用setTargetFragment().示例:
FragmentC fragmentC = FragmentC.newInstance();
fragmentC.setTargetFragment(FragmentB.this, REQUEST_CODE);
getFragmentManager().beginTransaction().replace(R.id.container, fragmentC).commit();
Run Code Online (Sandbox Code Playgroud)
然后,当您想要将数据从C传递回片段B时,您可以调用以下代码:
getTargetFragment().onActivityResult(
getTargetRequestCode(),
Activity.RESULT_OK,
new Intent().putExtra("datafrom C", "datafrom C")
);
Run Code Online (Sandbox Code Playgroud)
并从片段B中的onActivityResult()方法获取它:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode==REQUEST_CODE && resultCode==Activity.RESULT_OK) {
String datafromC = data.getStringExtra("datafrom C");
}
}
Run Code Online (Sandbox Code Playgroud)
当您将数据从片段A发送到片段B时,请使用相同的布尔值,如下所示:
FragmentA-> FragmentB
FragmentB ldf = new FragmentB ();
Bundle args = new Bundle();
args.putBoolean("BOOLEAN_VALUE",true);
ldf.setArguments(args);
getFragmentManager().beginTransaction().add(R.id.container, ldf).commit();
Run Code Online (Sandbox Code Playgroud)
当您将数据从片段C发送到片段B时,请使用与片段A到B中相同的BOOLEAN,如下所示:
FragmentC-> FragmentB
FragmentB ldf = new FragmentB ();
Bundle args = new Bundle();
args.putBoolean("BOOLEAN_VALUE",false);
ldf.setArguments(args);
getFragmentManager().beginTransaction().add(R.id.container, ldf).commit();
Run Code Online (Sandbox Code Playgroud)
最后,我们必须检查FragmentB中的值是否从Fragment A或FragemntC之类的地方
片段B
Boolean getValue= getArguments().getBoolean("BOOLEAN_VALUE");
if(getValue)
{
//VALUE RECEIVED FROM FRAGMENT A
}
else
{
//VALUE RECEIVED FROM FRAGMENT C
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12315 次 |
| 最近记录: |