生成的路径应该传递给片段,我通过本课中的活动使用接口来练习这一点
此解决方案工作良好,直到用户不改变设备的方向。
当设备在DialogFragment阶段或裁剪活动阶段旋转时,第一个活动和fragemnt被重新创建,并且DialogFragment的实例被销毁。所以我的回调没有运行,什么也没有发生。让我给你看代码:
设置单元活动
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
addNewUnitFragment = new AddNewUnitFragment();
fragmentTransaction.replace(R.id.single_unit_fragment_container,addNewUnitFragment,"myff");
fragmentTransaction.commit();
//My callback
@Override
public void call(String string) {
AddNewUnitFragment addNewUnitFragment = (AddNewUnitFragment)
getFragmentManager().findFragmentById(R.id.single_unit_fragment_container);
if(addNewUnitFragment != null) {
addNewUnitFragment.changeFragImage(string);
} else {
}
}
AddNewUnitFragment
public void onClick(View v) {
switch (v.getTag().toString()) {
case "add_image":
DialogImageSelect imageSelDialog = DialogImageSelect.newInstance(0);
imageSelDialog.show(getFragmentManager(),"imageSelDialog");
break;
...
//Function which should be called from SettingUnitActivity
public void changeFragImage (String string) {
//Do something with string
}
对话框ImageSelect
public static interface dateCallBack {
public abstract void call(String string);
}
static DialogImageSelect newInstance(int id) {
DialogImageSelect di = new DialogImageSelect();
Bundle args = new Bundle();
args.putInt("id", id);
di.setArguments(args);
return di;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
callerActivity = (dateCallBack)activity;
}
//Here we take and send image path from croper activity
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode != Activity.RESULT_CANCELED) {
if(requestCode == FROM_CROPPER) {
if(data != null) {
croppedFilePath = data.getStringExtra("filePath");
System.out.println("CALL "+callerActivity);
this.callerActivity.call(croppedFilePath);
dismiss();
}
}
}
}
当设备旋转时,我如何将数据发送到保留它的片段?
UPD:本主题部分揭示了我的问题的答案,但没有说明如果活动在Rotate之后重新创建,我如何使用接口回调从DialogFragment到活动到碎片传递数据。
基本上,您需要在onSaveInstanceState()
方法中保存片段上的实例状态。然后在基活动的onCreate()
方法中使用此保留状态。
参见:
一次,如何正确保存后堆栈中片段的实例状态?
想象一下,我有FragmentA,我从它开始DialogFraank(框中有)。如何将中的值取回FragmentA?我尝试制作这样的东西,但我没有成功。
我有一个DialogFragment,它使用FragmentPagerAdapter来显示选项卡。每个选项卡都有一个使用RecyclerView的不同片段。我可以获取单击后传递给片段的项目,但如何才能将数据从片段获取到DialogFragment,以便将其传递给调用活动? TabDialog扩展DialogFraank: TabAdapter扩展了FragmentPagerAdapter 在Fra
我想让对话框片段(DialogFragment)向我返回一个值,该值是在退出时在编辑数量(editQuantity)中输入的。 但我没有办法让它发挥作用。我可以通过将值传递给intent来实现这一点,但这会破坏当前活动的进度。 除了传递意图之外,还有什么方法可以返回我的值吗?
我正在尝试将数据从DialogFraank发送到创建此对话框的Fraank。在目标片段中,我使用以下代码: 我还在fragment实现了我的接口: 在DialogFragment中,我使用以下代码: 并发送数据: 我还试图从这个问题中使用onActivityResult(): 接收数据: 但我没有收到数据:(((
我的要求: 发现错误: 在这一行中..为什么值不显示在mainfragment中??
我是android的初学者。我试图找到一种方法将文本从活动的editText传输到片段,以便结果显示在片段的textview中。