2013-11-04 17 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