2015-10-05 57 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