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中取值:
以上就是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之间互相传值的方法,若文章中有什么差错还请各位指出,谢谢
相关文章推荐
- ANDROID安卓activity与fragment,activity之间互相传值(四)
- ANDROID安卓activity与fragment,activity之间互相传值(三)
- Fragment的生命周期以及跟Activity之间互相传值小总结
- Fragment的生命周期以及跟Activity之间互相传值小总结
- ANDROID安卓activity与fragment,activity之间互相传值(一)
- OnClientTriggerClick 两个页面之间互相传值
- Fragment之间通过Activity相互传值和调用的2个方式
- Android开发修改DialogFragment样式以及与activity之间的数据传递
- window.showModalDialog刷新父窗口 父子窗口之间传值
- Android和Luaj之间互相传值的问题
- Fragment与Activity之间传值
- Fragment之间传值
- Fragment跟Activity之间的通信(互相调用方法)
- fragment与activity之间的回调,用于数据更新操作(是fragment向activity里传值)
- Android笔记--简单的Fragment和Activity的之间的数据交互(传值)
- 跨域传值即主页面与iframe之间互相传值
- ANDROID安卓activity与fragment,activity之间互相传值(二)
- Android Fragment传递参数_Fragment之间传值的两种方法
- Fragment之间传值CallBack(Fragment01)
- Fragment之间传值