我在我的应用中使用谷歌的地方选择器作为片段(它没有设置内容视图方法)。当我更改为放置拾取器片段时,我在活动中片段顶部显示的图像将丢失,我所看到的只是"视图"这是由PlacePicker片段提供的。我有两个问题。
1)我想在布局中显示其他内容。 2)我想从地方选择器显示的视图中删除某些内容(或者至少更改搜索栏中的文本等)。
我怎样才能做到这一点?我提供了我用于活动的xml文件和placepicker片段的代码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
<com.baoyachi.stepview.HorizontalStepView
android:id="@+id/step_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frame_stepview">
</FrameLayout>
</LinearLayout>
public class PlacePickerFragment extends Fragment {
private static final String TAG = "PlacePickerSample";
private static final int ACTION_PICK_PLACE = 1;
private static final int REQUEST_PLACE_PICKER = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onResume() {
super.onResume();
try {
PlacePicker.IntentBuilder intentBuilder = new PlacePicker.IntentBuilder();
Intent intent = intentBuilder.build(getActivity());
// Start the Intent by requesting a result, identified by a request code.
startActivityForResult(intent, REQUEST_PLACE_PICKER);
} catch (GooglePlayServicesRepairableException e) {
GooglePlayServicesUtil
.getErrorDialog(e.getConnectionStatusCode(), getActivity(), 0);
} catch (GooglePlayServicesNotAvailableException e) {
Toast.makeText(getActivity(), "Google Play Services is not available.",
Toast.LENGTH_LONG)
.show();
}
// END_INCLUDE(intent)
}
/**
* Extracts data from PlacePicker result.
* This method is called when an Intent has been started by calling
* {@link #startActivityForResult(Intent, int)}. The Intent for the
* {@link com.google.android.gms.location.places.ui.PlacePicker} is started with
* {@link #REQUEST_PLACE_PICKER} request code. When a result with this request code is received
* in this method, its data is extracted by converting the Intent data to a {@link Place}
* through the
* {@link com.google.android.gms.location.places.ui.PlacePicker#getPlace(Intent,
* android.content.Context)} call.
*
* @param requestCode
* @param resultCode
* @param data
*/
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// BEGIN_INCLUDE(activity_result)
if (requestCode == REQUEST_PLACE_PICKER) {
if (resultCode == Activity.RESULT_OK) {
final Place place = PlacePicker.getPlace(data, getActivity());
final CharSequence name = place.getName();
final CharSequence address = place.getAddress();
final CharSequence phone = place.getPhoneNumber();
final String placeId = place.getId();
Log.d(TAG, "onActivityResult: 0"+place.getLatLng().toString() );
String attribution = PlacePicker.getAttributions(data);
if(attribution == null){
attribution = "";
}
Log.d(TAG, "Place selected: " + placeId + " (" + name.toString() + ")");
} else {
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
// END_INCLUDE(activity_result)
}
}