Java 如何在alertDialog(Android studio)中调用活动超类的方法

Java 如何在alertDialog(Android studio)中调用活动超类的方法,java,android,super,Java,Android,Super,当在特定片段上点击设备中的“后退”按钮时,我想提醒用户,让他们决定隐藏应用程序或留下。下面是代码段: @Override public void onBackPressed() { Fragment f = getSupportFragmentManager().findFragmentById(R.id.container); if(f instanceof PlanListFragment){ builder.setPositiveButton(R.string.

当在特定片段上点击设备中的“后退”按钮时,我想提醒用户,让他们决定隐藏应用程序或留下。下面是代码段:

@Override
public void onBackPressed() {
  Fragment f = getSupportFragmentManager().findFragmentById(R.id.container);
    if(f instanceof PlanListFragment){
        builder.setPositiveButton(R.string.alert_Cancel, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // Do nothing
            }
        });
        builder.setNegativeButton(R.string.alert_OK, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
               // I want to call this: **super.onBackPressed()**; but super is not recognized at all here.
            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();
    }else{
       super.onBackPressed();
    }
}
如上所述,当单击“确定”按钮时,如何调用此“super.onBackPressed()”方法

提前谢谢


无法识别Shawn

super.onBackPressed,因为您当前正在构造DialogInterface.OnClickListener。在构造所述侦听器之前,您可以简单地声明一个变量myActivity并调用该变量

Activity activity = this; 
 builder.setNegativeButton...
{
      ...
      activity.onBackPressed();
      ... 
 }
将“活动”替换为您所处的任何片段

//更新


可以编写执行super.onBackPressed()调用的新方法。

super.onBackPressed无法识别,因为您当前正在构造DialogInterface.OnClickListener。在构造所述侦听器之前,您可以简单地声明一个变量myActivity并调用该变量

Activity activity = this; 
 builder.setNegativeButton...
{
      ...
      activity.onBackPressed();
      ... 
 }
将“活动”替换为您所处的任何片段

//更新

可能会编写一个新方法来执行super.onBackPressed()调用。

如她的回答所述,super.onBackPressed无法识别,因为您当前正在构造DialogInterface.OnClickListener

如果仍处于同一活动中,则可以调用ActivityName.super.onBackPressed()。这将只调用超级方法

例如:

builder.setPositiveButton(strExit, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                CallActivity.super.onBackPressed();
            }
        });
正如她在回答中所说,super.onBackPressed无法识别,因为您当前正在构建DialogInterface.OnClickListener

如果仍处于同一活动中,则可以调用ActivityName.super.onBackPressed()。这将只调用超级方法

例如:

builder.setPositiveButton(strExit, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                CallActivity.super.onBackPressed();
            }
        });
我今天早些时候做了这件事,看起来效果很好。我不确定它是否应该,但确实如此


我今天早些时候做了这件事,看起来效果很好。我不确定它是否应该,但确实如此。

onBackPressed()已在MyActivity中。我需要的是找到一种方法来获得它的超级类,比如:Activity super\u Activity=this.super;我试过:Activity super_Activity=this.getParent();但是super_活动为空。我想您可以在清单中这样设置父级:我不确定这是否是您正在查找/需要的内容。onBackPressed()已在MyActivity中。我需要的是找到一种方法来获得它的超级类,比如:Activity super\u Activity=this.super;我试过:Activity super_Activity=this.getParent();但是super_活动为空。我认为您可以在清单中这样设置父级:我不确定这是否是您正在查找的/您需要的。因此,您希望在用户按“确定”时关闭对话框并关闭活动?因此,您希望在用户按“确定”时关闭对话框并关闭活动。?