2016-03-31 25 views
0

在我的MainActivity中,我在viewpager中有一個片段。在這個片段中我建立了一個自定義對話框自定義對話框可以在從MainActivity調用的其他片段中正常取消。但是,在這個片段中,它不能被取消。我不知道我的對話發生了什麼。請幫我檢查下面的代碼。提前致謝。Android:無法在viewpager中的片段中取消自定義對話框

dialog = new Dialog(getActivity(), R.style.CustomDialogTheme); 

    dialog.setContentView(R.layout.popup_login_sns); 

    LinearLayout cancelButton = (LinearLayout) dialog.findViewById(R.id.cancelButtonSNS); 
    cancelButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Log.d("GETBOOKMARK", "call dialog cancel"); 
      dialog.cancel(); 
     } 
    }); 

    dialog.show(); 

回答

0

嘗試用dismiss()

cancelButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Log.d("GETBOOKMARK", "call dialog cancel"); 
      dialog.dismiss(); 
     } 
    }); 

public void cancel() 

取消對話框。這與調用dismiss()基本相同,但它也會調用您的DialogInterface.OnCancelListener(如果已註冊)。

public void dismiss() 

關閉此對話框,從屏幕中移除。這個方法可以從任何線程安全地調用。請注意,不應該重寫此方法以在對話框關閉時執行清理,而是在onStop()中執行該方法。

這裏是代碼是幹什麼用的,

final Dialog dialog = new Dialog(this); 
      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      dialog.setContentView(R.layout.dialog); 
      dialog.show(); 
      ImageView gifView1 = (ImageView) dialog.findViewById(R.id.gifImageView); 
      Button declineButton = (Button) dialog.findViewById(R.id.declineButton); 
      Button accecptBtn = (Button) dialog.findViewById(R.id.acceptButton); 
      Button rateAppBtn = (Button) dialog.findViewById(R.id.rateButton); 
      declineButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        dialog.dismiss(); 
       } 
      }); 
      accecptBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        finish(); 
       } 
      }); 
+0

我也嘗試使用解僱()函數,但沒有任何變化。我無法關閉對話框。 –

+0

看到我編輯的答案,我用取消按鈕,它的工作。你應該有'cancelButtonSNS',即'''LinearLayout cancelButton =(LinearLayout)dialog.findViewById(R.id.cancelButtonSNS)'''popup'login_sns.xml'' – Kathi

+0

非常感謝,我可以關閉對話框。問題是我用來創建對話框的上下文。我在對話框的上下文中犯了一個錯誤。 –

0

只要改變你的方法dialog.cancel();dialog.dismiss();

dialog = new Dialog(getActivity(), R.style.CustomDialogTheme); 

     dialog.setContentView(R.layout.popup_login_sns); 

     LinearLayout cancelButton = (LinearLayout) dialog.findViewById(R.id.cancelButtonSNS); 
      cancelButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Log.d("GETBOOKMARK", "call dialog cancel"); 
        dialog.dismiss(); 
       } 
      }); 

      dialog.show(); 
相關問題