DialogFragment与Fragment之间互相传值

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之间互相传值的方法,若文章中有什么差错还请各位指出,谢谢

坚持原创技术分享,您的支持将鼓励我继续创作!