2013-11-04 16 views
0

有人能告訴我爲什麼我不能在自定義對話框方法中調用setOnClickListener方法嗎?有沒有可能的方式來處理這種對話中的點擊?下面的代碼:Android自定義對話方法

private Dialog wifiDialog() { 
    final Dialog dialog = new Dialog(activity); 
    dialog.setContentView(R.layout.wifi_dialog); 
    dialog.setTitle("Upload"); 

    Button no = (Button) findViewById(R.id.button_wifi_No); 
    Button yes = (Button) findViewById(R.id.button_wifi_Yes); 

    no.setOnClickListener(new OnClickListener() { // runtimeException 

     @Override 
     public void onClick(View v) { 
      wifiDialog().dismiss(); 
     } 
    }); 

    return dialog; 
} 

在此先感謝

回答

3

試試這個。

private Dialog wifiDialog(Context context) { 
    final Dialog dialog = new Dialog(context); 
    LayoutInflater layoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = layoutInflater.inflate(R.layout.wifi_dialog,null); 
    dialog.setContentView(view); 
    dialog.setTitle("Upload"); 

    Button no = (Button) view.findViewById(R.id.button_wifi_No); 
    Button yes = (Button) view.findViewById(R.id.button_wifi_Yes); 

    no.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 

    return dialog; 
} 

及用途:

wifiDialog(this); // In activity context; 

我解釋一下你爲什麼你得到錯誤。你循環你的邏輯。在onClick方法中,您嘗試創建另一個對話框並將相同的click listener設置爲相同的button。所以,如果你想解散你的對話,使用對話框的實例,而不是創建新的對話框。

+0

請不要只是發佈代碼,沒有解釋你改變了什麼,爲什麼,或者OP(和未來的訪問者)什麼都不學。 – Simon

+0

@Simon對不起。我會考慮到這一點 – 2013-11-04 22:19:16