Java 如何禁用外部库中的“后退”按钮';安卓工作室的活动?
我正在使用这个库: 如何禁用此地点选择器活动的物理后退按钮 以下是打开此活动的代码:Java 如何禁用外部库中的“后退”按钮';安卓工作室的活动?,java,android,android-studio,Java,Android,Android Studio,我正在使用这个库: 如何禁用此地点选择器活动的物理后退按钮 以下是打开此活动的代码: 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.Ad
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
}
解决方案可以是创建一个抽象活动,它覆盖
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
}
}
此解决方案的一个问题是,如果需要扩展另一种类型的活动
别忘了,不建议在all应用程序中禁用
onBackPressed()
。扩展库如何?这些类不是最终的,我认为您所需要的只是扩展Activity类,可能是builder类。首先,请检查一下。这可能是可能的扩展类
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
}
}
正如文档所述,您应该使用一个builder类来启动活动。我认为builder类是final类,因此不能扩展该类,但该类本身只做两项工作:添加访问令牌和添加placePicker选项。因此,如果您使用此项中的键名和意图数据调用CustomPickerActivity,请将a定义为本地
private static boolean a = false;
和重写onBackPressed()
您不想更改该库中相应活动的源代码吗?然后请该库的开发人员添加一项功能,让开发人员选择是否希望在应用程序栏中显示“后退”箭头。欢迎对问题进行Panjeet编辑,但请注意,编辑应为问题添加澄清或更多详细信息,但您已更改了完成问题本身,这会导致post出现严重问题。请不要更改已回滚编辑的问题的轨迹。赏金不是在7天内问尽可能多的问题。@Panjeet-请问一个新问题,而不是编辑这个问题。试图在一次悬赏下问多个问题是对那些花时间回答您原始问题的人的不尊重。您是否扩展此
PlaceSelectionPluginActivity
sample类?您只是从mapBox插件示例复制粘贴的代码。这就是为什么我不理解您要扩展哪个活动。好吧,那么为什么您不能使用建议的答案,因为您的活动只扩展AppCompatActivity
。像公共类PlaceSelectionPluginActivity扩展了NoBackPressedActivity
,您是否尝试覆盖PlaceSelectionPluginActivity
活动中的onBackPressed()
?我猜你试过了,但没用。这就是为什么你要寻找一个全局解决方案,在应用程序中的任何地方都禁用它。和是不可扩展的。您可以从PickerActivity复制/粘贴代码,在BackPress上进行修改,并以与在builder中相同的方式启动活动。我认为第二个库使用GoogleMapAPI,没有什么特别的,最好自己实现它。如果是这样,请发出请求或在库repo打开一个问题。我更喜欢自己实现谷歌地图库,因为这会容易得多。这一点都不好笑。你在拖吗?为什么你要将一个问题编辑成一个完全不同的问题,并且已经发布了现有答案?不。任何检查编辑的人都会知道真相。在外部活动中打开“关于设备”页面和禁用“上一步”按钮完全不是同一个问题。@Panjeet写一个新问题。让我们来回答。
@Override
public void onBackPressed()
{
if(a)
{
super.onBackPressed();
}
else
{
}
}