Fragment信息交互之Fragment获取DialogFragment的返回数据
来源:互联网 发布:手机淘宝 二手 编辑:程序博客网 时间:2024/04/28 15:32
转自:http://blog.csdn.net/xiaoleiacmer/article/details/51066110
Fragment信息交互会出现使用一个Fragment点击触发DialogFragment,并将信息数据返回到开始的Fragment中的情况。这种情况无法再使用startActivityforResult,所以可以使用setTargetFragment(),以及getTargetFragment().onActivityResult()的方式来进行收发数据。
ContentFragment是依附在ContentActivity上的Fragment,点击ContentFragment中的按钮后,会跳出DialogFragment,此时DialogFragment与ContentFragment是同一个Activity。
关键代码:
1 在ContentFragment设置目标Fragment
EvaluateDialog evaluateDialog = new EvaluateDialog(); //设置目标Fragment evaluateDialog.setTargetFragment(ContentFragment.this, REUEST_CODDE); evaluateDialog.show(getFragmentManager(), "evaluate_dialog");
2 在DialogFragment设置返回数据:
protected void setData(String str) { if(getTargetFragment()==null) { return ; } Intent intent = new Intent(); intent.putExtra(REQUESE, EvaluteArg[mWhich]); //获得目标Fragment,并将数据通过onActivityResult放入到intent中进行传值 getTargetFragment().onActivityResult(ContentFragment.REUEST_CODDE, Activity.RESULT_OK, intent); }
3 在ContentFragment对返回数据进行接收解析:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(requestCode==REUEST_CODDE) { String stringExtra = data.getStringExtra(EvaluateDialog.REQUESE); System.out.println("stringExtra :"+stringExtra); } }
ContentFragment:
package com.example.fragmentdialog; import android.app.Fragment; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; public class ContentFragment extends Fragment { protected static final int REUEST_CODDE = 0; @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view = inflater.inflate(R.layout.content_fragment, null); Button btn = (Button)view.findViewById(R.id.btn_fragment); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { System.out.println("123"); EvaluateDialog evaluateDialog = new EvaluateDialog(); //设置目标Fragment evaluateDialog.setTargetFragment(ContentFragment.this, REUEST_CODDE); evaluateDialog.show(getFragmentManager(), "evaluate_dialog"); } }); return view; } /** * 接收返回参数 */ @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if(requestCode==REUEST_CODDE) { String stringExtra = data.getStringExtra(EvaluateDialog.REQUESE); System.out.println("stringExtra :"+stringExtra); } } }
DialogFragment:
package com.example.fragmentdialog; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.os.Bundle; import android.widget.TextView; public class EvaluateDialog extends DialogFragment { public String[] EvaluteArg = new String[] { "GOOD", "BAD", "NORMAL" }; private int mWhich; public static final String REQUESE="RESOIBSE"; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder buidler = new AlertDialog.Builder(getActivity()); // 直接设置内容模式 TextView textView = new TextView(getActivity()); buidler.setView(textView); buidler.setItems(EvaluteArg, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mWhich = which; System.out.println("内容 :" + EvaluteArg[which]); System.out.println("当前点击项: " + which); setData(EvaluteArg[which]); } }); return buidler.create(); } protected void setData(String str) { if(getTargetFragment()==null) { return ; } Intent intent = new Intent(); intent.putExtra(REQUESE, EvaluteArg[mWhich]); //获得目标Fragment,并将数据通过onActivityResult放入到intent中进行传值 getTargetFragment().onActivityResult(ContentFragment.REUEST_CODDE, Activity.RESULT_OK, intent); } }
ContentActivity:
package com.example.fragmentdialog; import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; public class ContentActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); InitContentFragment(); } private void InitContentFragment() { FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); ContentFragment contentFragment = new ContentFragment(); transaction.replace(R.id.fl_content, contentFragment); transaction.commit(); } }
0 0
- Fragment信息交互之Fragment获取DialogFragment的返回数据
- Fragment信息交互之Fragment获取DialogFragment的返回数据
- Fragment信息交互之不同Activity获取信息方式
- Fragment与Fragment之间的数据交互
- Fragment - DialogFragment
- Fragment+DialogFragment
- Android进阶之Fragment与Activity之间的数据交互
- Fragment通过OnActivityResult获取Activity返回数据
- Fragment 与DialogFragment 相互之间传递数据
- Activity与Fragment数据传递之Fragment之间获取数据
- 使用Fragment实现简单的数据交互
- activity与fragment之间的数据交互
- Fragment与Activity之间的数据交互
- Fragment的数据交互 一 使用Handler
- Fragment与Activity之间的数据交互
- DialogFragment中如何获取Activity中onActivityResult的返回信息
- Fragment之9_____解除 DialogFragment
- Fragment初学3——使用Fragment的子类DialogFragment
- java实现md5和sha1加密类
- openstack——debug
- easyui layout 高度怎么自适应?
- error LNK2001: 无法解析的外部符号 fatal error LNK1120: 1 个无法解析的外部命令(调用约定的问题)
- memcached简介及java使用方法
- Fragment信息交互之Fragment获取DialogFragment的返回数据
- Spark SQL thrift server 部署
- algrothm_reverse(algrothm+round)【反转链表】
- 模板复习计划——字符串
- lightoj 1253 - Misere Nim Nim博弈
- iOS中属性与成员变量的区别
- [疯狂Java]JDBC:PreparedStatement预编译执行SQL语句
- MySQL基础十:MySQL图形管理工具
- linux进程间通讯学习总结