2017-06-29 62 views
0

當在特定片段的設備上點擊「返回」按鈕時,我想提醒用戶並讓他們決定隱藏應用程序或保留。下面的代碼段:如何調用alertDialog中一個活動的超類方法(Android Studio)

@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(); 
    } 
} 

如上評論,我怎麼能叫單擊「確定」按鈕,當這個「supper.onBackPressed()」方法?

在此先感謝!

肖恩

+0

所以你想關閉對話框並關閉活動,當用戶按「確定」。 –

回答

0

super.onBackPressed無法識別,因爲您目前正在構建DialogInterface.OnClickListener。你可以簡單地在構造所述監聽器之前聲明一個變量myActivity,然後在那個監聽器上調用onBack。

Activity activity = this; 
builder.setNegativeButton... 
{ 
     ... 
     activity.onBackPressed(); 
     ... 
} 

替換 「活動」 與你在任何片段。

// 更新

在上面寫上一個新的方法,該方法是否super.onBackPressed()調用。

+0

onBackPressed()已經在MyActivity中。我需要的是找到一種方法來獲得它的超類,如下所示:Activity super_activity = this.supper;我試過這個:Activity super_activity = this.getParent();但super_activity爲空。 – Shawn

+0

我想你可以在你的清單中設置這樣的父項:[提供導航](https://developer.android.com/training/implementing-navigation/ancestral.html) 我不確定這是什麼你正在尋找/你在這裏需要什麼。 – DerDingens

相關問題