2015-05-11 198 views
0

我試圖在一個偵聽器上啓動一個模式,我有2個奇怪的運行。對話框不顯示android

1)錯誤沒有任何解釋。 2)沒有,沒有錯誤,模態只是不出現。

這裏是我的代碼:

private void onJoined(JSONObject camp){ 
    Looper.prepare(); 

    final Dialog dialog = new Dialog(this); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
    Window window = dialog.getWindow(); 
    lp.copyFrom(window.getAttributes()); 
    //This makes the dialog take up the full width 
    lp.width = WindowManager.LayoutParams.MATCH_PARENT; 
    window.setAttributes(lp); 
    dialog.setContentView(R.layout.modal_layout); 

    Button dialogButton = (Button) dialog.findViewById(R.id.modal_btn1); 
    // if button is clicked, close the custom dialog 
    dialogButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 
    dialog.show(); 
} 

能有人幫助呢?

回答

1

你爲什麼要調用Looper.prepare?

試試這個,如果你不在主線程

private void onJoined(JSONObject camp){ 
    this.runOnUiThread(new Runnable() { 
     public void run() { 
      final Dialog dialog = new Dialog(this); 
      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
      WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
      Window window = dialog.getWindow(); 
      lp.copyFrom(window.getAttributes()); 
      //This makes the dialog take up the full width 
      lp.width = WindowManager.LayoutParams.MATCH_PARENT; 
      window.setAttributes(lp); 
      dialog.setContentView(R.layout.modal_layout); 

      Button dialogButton = (Button) dialog.findViewById(R.id.modal_btn1); 
      // if button is clicked, close the custom dialog 
      dialogButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        dialog.dismiss(); 
       } 
      }); 
      dialog.show(); 
     } 
    }); 
}