Fragment信息交互之Fragment获取DialogFragment的返回数据

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(getFrag
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Fragment获取数据数据,你需要执行以下步骤: 1. 确保你已经在你的应用程序中创建了SQLite数据库,并且你已经定义了一个合适的数据模型。例如,你可以使用Room库来简化这个过程。 2. 在你的Fragment中实现一个异步任务(AsyncTask)来查询数据库并获取数据。异步任务可以在后台线程中执行查询操作,避免在主线程上执行耗时操作导致应用程序卡顿。 3. 在异步任务中使用数据库访问对象(DAO)来查询数据库并获取数据。DAO是一个抽象接口,它定义了一组方法来执行数据库操作,例如查询、插入、更新和删除等。 4. 将查询结果返回Fragment中,你可以使用回调函数或LiveData来实现这个过程。回调函数是一个函数指针,它可以在异步任务完成后调用。LiveData是一个观察者模式,它可以在数据发生变化时通知观察者。 下面是一个使用Room库在Fragment中查询数据库的示例代码: ```java public class MyFragment extends Fragment { private MyViewModel mViewModel; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.my_fragment, container, false); mViewModel = ViewModelProviders.of(this).get(MyViewModel.class); mViewModel.getLiveData().observe(this, new Observer<List<MyEntity>>() { @Override public void onChanged(@Nullable List<MyEntity> myEntities) { // Update UI with database data } }); return view; } private class MyViewModel extends AndroidViewModel { private MyDao mDao; private MutableLiveData<List<MyEntity>> mLiveData; public MyViewModel(Application application) { super(application); MyDatabase db = MyDatabase.getInstance(application); mDao = db.myDao(); mLiveData = new MutableLiveData<>(); loadData(); } public LiveData<List<MyEntity>> getLiveData() { return mLiveData; } private void loadData() { new AsyncTask<Void, Void, List<MyEntity>>() { @Override protected List<MyEntity> doInBackground(Void... voids) { return mDao.getAll(); } @Override protected void onPostExecute(List<MyEntity> myEntities) { mLiveData.setValue(myEntities); } }.execute(); } } } ``` 在这个示例代码中,我们在MyFragment中创建了一个MyViewModel对象,并观察它的LiveData对象。MyViewModel对象负责查询数据库并将结果传递给LiveData对象。LiveData对象在数据发生变化时通知观察者(MyFragment),从而更新UI。注意,在这个示例代码中,我们使用了异步任务来执行数据库查询操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值