DialogFragment与Fragment之间互相传值

来源:互联网 发布:js newdate 编辑:程序博客网 时间:2024/06/16 13:24
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之间互相传值的方法,若文章中有什么差错还请各位指出,谢谢


0 0
原创粉丝点击