Pan*_*eet 0 java android 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道以下是一般如何禁用物理后退按钮,但在这种情况下我该怎么做?
@Override
public void onBackPressed() {
// do nothing because you don't want them to leave when it's pressed
}
Run Code Online (Sandbox Code Playgroud)
扩展图书馆怎么样?这些类不是最终的,我认为您所需要的只是扩展 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
}
}
Run Code Online (Sandbox Code Playgroud)
正如文档所说,您应该使用构建器类来启动活动。BuilderClass我认为 builder 类是最终类,因此您不能扩展该类,但该类本身只做两项工作:添加访问令牌和添加 placePicker 选项。所以,如果你yourCustomPickerActivity与此键值名意向数据类
一个解决方案可能是创建一个抽象的 Activity 来覆盖onBackPressed(). 那么你所有的活动都需要扩展这个新的活动。
public abstract class NoBackPressedActivity extends AppCompatActivity {
@Override
public void onBackPressed() {
// do nothing because you don't want them to leave when it's pressed
}
}
Run Code Online (Sandbox Code Playgroud)
此解决方案的一个问题是,如果您需要扩展另一种类型的活动。
不要忘记,不建议onBackPressed()在所有应用程序中禁用。
| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |