您的位置:首页 > 其它

DialogFragment与Fragment之间互相传值

2017-05-03 09:51 316 查看
DialogFragment与Fragment互相传值有两种情况:
一、DialogFragment与Fragment在同一Activity:
在这种情况下,就利用onActivityResult来取值,与Activity获取另一个Activity的返回值一样,首先定义一个REQUEST的静态常量:

public static final int REQUEST=1;
然后在需要取值的Fragemnt中,覆写onActivityResult:

@Override
public void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if(requestCode == REQUEST){
//data.getStringExtra就获取到了DialogFragment所传递过来的值
String evaluate = data.getStringExtra(DialogFragment.RESPONSE};
}

接下来是DialogFragment:
同样的,需要先定义一个RESPONSE;

public static final String RESPONSE="response";
至于为什么是String而不是int,boolean类型的,只是因为,这个RESPONSE只是一个键名,

就跟Intent的put,get方法一样,需要同一个键才能获取到相应的值,接下来就是写一个方法,用来传递给Fragment

protected void setResult(){
//先判断是否有targetFragment
if(getTargetFragment == null){
return;
}else{
Intent intent = new Intent();
intent.putExtra(RESPONSE,"需要传递的值");
getTragetFragment.onActivityResult(Fragment.REQUEST,Acitivity.RESULT.OK,intent);
}
}

       那么,在Fragment中显示DialogFragment之前,需要先添加targetFragment才行,

否则在DialogFragment中无法找到targetFragment,就无法执行存值的逻辑

DialogFragment dialog = new DialogFragment();
dialog.setTragetFragment(Fragment.this,REQUEST);
dialog.show(getFragmentManager,"dialog");

这样,DialogFragment传值给Fragment就完成了,Fragment传值给DialogFragment也是同理

二、DialogFragment与Fragment不在同一Activity:

        与两个Activity之间传值一样,使用Intent传值,在AFrament中传值给BFragment:

Intent intent = new Intent(getActivity,BFragment.class);
intent.putExtra(BFragment.EXTRA_STRING,"需要传递的值");
startActivity(intent);

值已经传递给BFragment了,接下来是在BFragment中取值:

String data = getActivity.getIntent().getString Extra(EXTRA_STRING);


以上就是DialogFragment与Fragment之间互相传值的方法,若文章中有什么差错还请各位指出,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: