我为我的Android应用创建了Google地图功能。当用户进入FragmentA时,会要求他们输入一些信息,例如作业的名称和描述。当他们在该页面上缩小时,他们可以选择一个地图按钮,允许他们打开我创建的Google地图。在这个片段FragmentMap上,他们可以选择一个位置。一旦他们开心,他们可以按绿色勾选/检查图标,显示一个PopUp询问他们是否对该位置感到满意。
当用户选择“是”按钮时,我希望他们从地图中选择的地址,从FragmentMap传输回FragmentA。我还需要FragmentA在按下Map按钮之前保留他们已经输入的所有用户信息。
例如,用户输入了“作业名称”,“描述”和“收集日期”,然后按下地图。然后他们在地图上选择一个位置并确认它是正确的。然后他们将回到FragmentA,其中之前输入的所有细节仍然在EditText字段以及用户选择的地图中的地址。
FragmentA,用户可以输入数据,例如Avdert Name。当他们按下Map按钮时,他们将显示FragmentMap
一旦用户选择了一个位置并确认了该位置,就会显示这个PopUp。如果他们按是,则地址(如图所示)将被转移回FragmentA
我的问题是,如何将我的Map片段中的数据传回FragmentA并保留FragmentA中以前的所有数据。我正在考虑使用bundle将数据从FragmentA传输到FragmentMap,然后再将其传回。他们是一种更有效率和更轻松的方式吗?
注意
我的问题与我发现的关于地图并从之前的片段中保留信息的其他人不同
答案 0 :(得分:1)
从A启动片段B时,可以调用setTargetFragment()。示例:
FragmentB fragmentB = FragmentB.newInstance();
fragmentB.setTargetFragment(FragmentA.this, REQUEST_CODE);
getFragmentManager().beginTransaction().replace(R.id.container,
fragmentB).commit();
然后当您想要将数据从B传递回片段A时,您可以调用以下代码:
getTargetFragment().onActivityResult(
getTargetRequestCode(),
Activity.RESULT_OK,
new Intent().putExtra("datafrom B", "datafrom B")
);
从片段A:
中的onActivityResult()方法获取它@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode==REQUEST_CODE && resultCode==Activity.RESULT_OK) {
String datafromB = data.getStringExtra("datafrom B");
}
}
答案 1 :(得分:0)
您可以将信息传递给包含((MainActivity)getActivity()).mapLocationUpdated(latlng)
等片段的Activity,并在您的活动中创建mapLocationUpdated
,然后通过查找片段将信息传递给上一个片段(使用{{ 1}}并传递信息。
您还可以创建活动实现的界面(例如getSupportFragmentManager().findFragmentByTag(tag)
,其方法为MapLocationInteractor
,并按照以下方式调用您的活动:mapLocationUpdated(latlng)
。
不要忘记检查getActivity和findFragment部分中的空值。
答案 2 :(得分:0)
您可以通过在特定片段中创建方法并传递google map
的实例来实现此目的