java - 如何在 Android Studio 中禁用外部库活动中的后退按钮?
问题描述
我正在使用这个库: https ://github.com/suchoX/PlacePicker
如何禁用此地点选择器活动的物理后退按钮?
这是打开此活动的代码:
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.sucho.placepicker.AddressData;
import com.sucho.placepicker.Constants;
import com.sucho.placepicker.PlacePicker;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new PlacePicker.IntentBuilder()
.setLatLong(40.748672, -73.985628) // Initial Latitude and Longitude the Map will load into
.showLatLong(true) // Show Coordinates in the Activity
.setMapZoom(12.0f) // Map Zoom Level. Default: 14.0
.onlyCoordinates(true) //Get only Coordinates from Place Picker
.build(this);
startActivityForResult(intent, Constants.PLACE_PICKER_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (requestCode == Constants.PLACE_PICKER_REQUEST) {
if (resultCode == Activity.RESULT_OK && data != null) {
AddressData addressData = data.getParcelableExtra(Constants.ADDRESS_INTENT);
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
}
我知道以下是通常如何禁用物理后退按钮,但是在这种情况下我该怎么做呢?
@Override
public void onBackPressed() {
// do nothing because you don't want them to leave when it's pressed
}
解决方案
扩建图书馆怎么样?这些类不是最终的,我认为您需要的只是扩展 Activity 类并且可能是构建器类。首先检查activityClass。这可能是可能的扩展类。
import com.mapbox.mapboxsdk.places.R;
class YourPickerActivity extends PlacePickerActivity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addBackButtonListener()
}
@Override
public void onBackPressed() {
// do nothing because you don't want them to leave when it's pressed
}
private void addBackButtonListener() {
ImageView backButton = findViewById(R.id.mapbox_place_picker_toolbar_back_button);
backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//doNothing
}
});
//or hide the button
}
}
正如文档所说,您应该使用构建器类来启动活动。BuilderClass我认为构建器类是最终的,因此您不能扩展该类,但该类本身只做两项工作:添加访问令牌和添加 placePicker 选项。因此,如果您使用带有此类键名的意图数据调用yourCustomPickerActivity
推荐阅读
- php - Send the latitude and longitude of Android with php and calculate the distance to the place received from the db and sort by distance
- kotlin - Kotlin algorithm to reverse a given string
- html - 不使用 flexbox 或网格的嵌套列
- javascript - 尽管编程语言不同,但仍与 SignalR 通信?
- c - 使用 scanf 指定格式
- php - 如何在 woocommerce 的查看订单页面中自定义订单备注
- linux - 如何使用“find -o”命令排除文件和文件夹的“rm -rf”
- c++ - D3D11CreateDeviceAndSwapChain 失败并显示 887a0001
- node.js - Await Promise.all async 在我的代码中不起作用
- css - ngFor 行中的元素