2016-12-03 69 views
0

构建器。我想在解雇或取消时执行一些操作。所以我使用setOnDismissListenersetOnCancelListener就像下面的代码。但是这两种方法都不能检测何时解雇AlertDialog.BuilderAlertDialog.Builder解雇不适用于API 17 android

private static void openOptionDialog(final Context context, Item[] items, String title, DialogInterface.OnClickListener positiveClick) { 
     ListAdapter adapter = new ArrayAdapter<Item>(
       context, android.R.layout.select_dialog_item, items) { 
      @Override 
      public View getView(int position, View convertView, ViewGroup parent) { 
       View view = super.getView(position, convertView, parent); 
       TextView textView = (TextView) view.findViewById(android.R.id.text1); 
       Item item = getItem(position); 
       textView.setText(item.string); 
       textView.setTextSize(16f); 
       textView.setCompoundDrawablesWithIntrinsicBounds(item.icon, 0, 0, 0); 
       textView.setCompoundDrawablePadding(BDevice.getPixelFromDp(context, 15)); 
       return view; 
      } 
     }; 

     AlertDialog.Builder builder = AlertUtils.getBuilder(context); 
     builder.setTitle(title); 
     builder.setAdapter(adapter, positiveClick); 
     builder.create().show(); 

     builder.setOnDismissListener(new DialogInterface.OnDismissListener() { 
      @Override 
      public void onDismiss(DialogInterface dialog) { 
       WidgetSettings preference = new WidgetSettings(context); 
       if(preference.canWidgetTooteets()){ 
        preference.clear(); 
       } 
      } 
     }); 

     builder.setOnCancelListener(new DialogInterface.OnCancelListener() { 

      public void onCancel(DialogInterface dialog) { 
       WidgetSettings preference = new WidgetSettings(context); 
       if(preference.canWidgetTooteets()){ 
        preference.clear(); 
       } 
      } 
     }); 

    } 

AlertUtilsgetBuilder方法如下,

public static AlertDialog.Builder getBuilder(Context context) { 
     return new AlertDialog.Builder(context, R.style.Dialog); 
    } 

可否请你建议我找到了一个解决方案?提前致谢。

+0

ü要使用Aleart或像Dismis或OK aleart按钮进行操作? –

+0

@RavishSharma我想在解散AlertDialog.Builder时执行一些操作。 – Sangeetha

+1

@Sangeetha尝试* AlertDialog *而不是* AlertDialog.Builder *并添加* setOnDismissListener *,因为它可以工作。 –

回答

0

尝试用AlertDialog改为只AlertDialog.Builder和它会成功添加setOnDismissListener

例如,

AlertDialog alert = builder.create(); 
alert.setOnDismissListener(yourDismissListener); 
alert.show(); 

AlertDialog alert = builder.create(); 
alert.setOnCancelListener(yourCancelListener); 
alert.show(); 
0

尝试alert.cancel()代替alert.dismiss()并添加OnCancelListener这样的:

builder.setOnCancelListener(new DialogInterface.OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dialog) { 
      dialog.dismiss(); 
     } 
    }); 
相关问题