我正在尝试从属于我的 Android 应用程序的片段中使用 google placepicker。我似乎无法使用 onActivityResult 返回的数据。我使用来自(https://inthecheesefactory.com/blog/how-to-fix-nested-fragment-onactivityresult-issue/en)的解决方案将结果返回到片段中。但是,此解决方案不允许我根据 placePicker 的输入更改视图中的元素。带有地点信息的吐司可以工作,但不会更改按钮,因为它在膨胀的视图之外。我正在使用片段,因为我的应用程序是一个带有 2 个片段的选项卡式滑块应用程序,用于创建位置和查看位置。
如有必要,请帮助并要求澄清!
这是 myFragment 中的 onCreateView 扩展 Fragment 类:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_make_minyan, container, false);
//Map Place Activity
final Button locationButton = (Button) rootView.findViewById(R.id.button_location);
locationButton.setOnClickListener(new View.OnClickListener() {
//int RESULT_OK;
public void onClick(View v) {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
try {
getActivity().startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST);
} catch (GooglePlayServicesRepairableException e) {
e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
e.printStackTrace();
}
}
});
//a bunch of other buttons and spinner etc that are working.
return rootView;
}
这是上面链接的解决方案中使用的 onActivityResult 代码。注释掉的行是当前不起作用的代码行。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PLACE_PICKER_REQUEST) {
if (resultCode == Activity.RESULT_OK) {
Place place = PlacePicker.getPlace(data, getActivity());
//locationButton.setText(String.format("Place: %s", place.getName()));
String toastMsg = String.format("Place: %s", place.getName());
Toast.makeText(getContext(), toastMsg, Toast.LENGTH_LONG).show();
}
}
}