2015-10-05 56 views
0

我有一個類有一個方法,通過調用它可以顯示一個對話框。這個對話框有他們有聽衆的按鈕。 問題是,當onClick被觸發時,我無法獲得對話框,所以我可以解僱。在這種情況下我該怎麼辦?我不想對話框存儲爲一個變量,因爲這是靜態類,不要堅持對話如何從OnClick中消除對話框而沒有參考對話框

public void onClick(View v) { 
     switch(v.getId()){ 
     case R.id.bActionUpgradeSword: 
      // do action 

      break; 
     case R.id.bActionUpgradeArmor: 
       // do action   
      break; 
     } 

     // I WANT TO DISMISS DIALOG HERE 
    } 

private void showUpgradeSwordDiag(Activity act){ 
     Dialog diag = new Dialog(act); 
     diag.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     diag.setContentView(R.layout.diag_upgrade_sword_dialog); 
     /* add some info to dialog */ 
     /* set the click listeners */ 
     diag.show() 
} 
+0

可能會更好地使用[DialogBu​​ilder](http://developer.android.com /guide/topics/ui/dialogs.html) – t0mm13b

+0

這聽起來像是你想引用一個對話框,作爲這個包含對象中的一個字段。沒有辦法「立即獲取所有對話框並將其解除」。 :) –

回答

0

嘗試設置對話框,在查看標籤,然後獲取代碼如下

Dialog diag = null; 
Button b = null; 
b.setTag(diag); 
Dialog d = (Dialog) b.getTag(); 
+0

實際上可能會有效。我會試一試...謝謝 – Snake

0

參考試試這個:

public void onClick(View v) { 
      switch(v.getId()){ 
      case R.id.bActionUpgradeSword: 
       // do action 
       if(diag!=null){ 
       diag.dismiss(); 
       } 
       break; 
      case R.id.bActionUpgradeArmor: 
        // do action   
       break; 
      } 

      // I WANT TO DISMISS DIALOG HERE 
     } 
    Dialog diag; 
    private void showUpgradeSwordDiag(Activity act){ 
      diag = new Dialog(act); 
      diag.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      diag.setContentView(R.layout.diag_upgrade_sword_dialog); 
      /* add some info to dialog */ 
      /* set the click listeners */ 
      diag.show() 
    } 
+0

謝謝,但如果你看到我的問題,我不想創建一個變量來保存對話框的引用,因爲這個類是靜態的。 Idont希望將diag引用永久保留 – Snake

0

創建一個類實現DialogInterface.OnClickListener並根據需要重寫onClick方法。是這樣的:

public void onClick (DialogInterface dialog, int which) { 
switch(which){ 
    case BUTTON_NEGATIVE: 
    dialog.dismiss(); 
    break; 
} 
} 
+0

Iam使用自定義對話框而不是提示對話框 – Snake

+0

通過構造函數將對話框傳遞給您的自定義OnClickListener類 – Amir