2014-09-28 3 views
24

क्या मैं पॉजिटिव बटन पर क्लिक करने के बाद बस अपना अलर्टडिअलॉग खारिज नहीं कर सकता?एंड्रॉइड सकारात्मक बटन पर क्लिक करने के बाद AlertDialog को खारिज न करें

मैं अपने ArrayAdapter listWords पर कुछ अपडेट दिखाने के लिए संवाद रखना चाहता हूं।

यह मेरा कोड है। मदद के लिए धन्यवाद :)

AlertDialog.Builder sayWindows = new AlertDialog.Builder(MapActivity.this); 

    final EditText saySomething = new EditText(MapActivity.this); 

    sayWindows.setPositiveButton("ok", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        say = userName + " Says: "+saySomething.getText(); 
        showPosition.setText(say);      
       } 
      }); 

    sayWindows.setNegativeButton("cancel", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
       } 
      }); 

    sayWindows.setAdapter(listWords, null); 
    sayWindows.setView(saySomething); 
    sayWindows.create().show(); 
+0

आप की कोशिश की है 'setCancelable (गलत)'? –

+0

मैंने setTitle के नीचे sayWindows.setCancelable (false) डाल दिया है, लेकिन यह काम नहीं कर रहा है। –

+0

और यह पॉजिटिवबटन पर काम नहीं करता है या तो क्लिक करें। –

उत्तर

41

@ छोटे बाल समाधान को देखने के बाद, मैं इसे बनाने का प्रयास करता हूं। हमें बताएं कि यह आपके लिए काम करता है या नहीं।

AlertDialog.Builder sayWindows = new AlertDialog.Builder(
      MapActivity.this); 
    final EditText saySomething = new EditText(MapActivity.this); 
    sayWindows.setPositiveButton("ok", null); 
    sayWindows.setNegativeButton("cancel", null); 
    sayWindows.setAdapter(listWords, null); 
    sayWindows.setView(saySomething); 

    final AlertDialog mAlertDialog = sayWindows.create(); 
    mAlertDialog.setOnShowListener(new DialogInterface.OnShowListener() { 

     @Override 
     public void onShow(DialogInterface dialog) { 

      Button b = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
      b.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View view) { 
        // TODO Do something 
        say = userName + " Says: "+saySomething.getText(); 
        showPosition.setText(say); 
       } 
      }); 
     } 
    }); 
    mAlertDialog.show(); 
+1

धन्यवाद लेकिन सकारात्मक बटन कोई फंक्शन नहीं लगता है। मैंने वहां टोस्ट लगाया लेकिन यह काम नहीं किया। –

+1

हफ, अंततः यह किया, अब यह काम कर रहा है, इसे जांचें। बनाने के साथ AlertDialog असाइन करने के परिवर्तनों के साथ, फिर सेटऑनशोलिस्टर गंदगी सेट करें, और उस कॉलिंग शो के बाद()। अब यह काम कर रहा है, उम्मीद है कि यह आपके लिए भी काम करता है। यदि ऐसा होता है, तो मैं आपको उत्तर के रूप में चिह्नित करने का अनुरोध करता हूं, ताकि भविष्य में अन्य इसे आसानी से ढूंढ सकें। धन्यवाद। – Chitrang

+0

आपको बहुत बहुत धन्यवाद। यह मेरे लिए ठीक काम कर रहा है। –

8

सबसे मतदान उत्तर के आधार पर के लिए How to prevent a dialog from closing when a button is clicked

final AlertDialog d = new AlertDialog.Builder(context) 
      .setView(v) 
      .setTitle(R.string.my_title) 
      .setPositiveButton(android.R.string.ok, null) //Set to null. We override the onclick 
      .setNegativeButton(android.R.string.cancel, null) 
      .create(); 

    d.setOnShowListener(new DialogInterface.OnShowListener() { 

     @Override 
     public void onShow(DialogInterface dialog) { 

      Button b = d.getButton(AlertDialog.BUTTON_POSITIVE); 
      b.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View view) { 
        // TODO Do something 

       } 
      }); 
     } 
    }); 

मेरा मानना ​​है कि आप सकारात्मक बटन के हैंडलर ओवरराइड करने के लिए की जरूरत है। जब कोई निश्चित स्थिति पूरी हो जाती है तो संवाद को खारिज करने के लिए अपना तर्क जोड़ें।

+0

मैं "अलर्टडिअलॉग.बिल्डर डी" को "अलर्टडिअलॉग डी" में बदलने के बाद एडाप्टर (listWords, null) सेट नहीं कर सकता। क्या आप मुझे बता सकते हैं क्यों? –

+0

धन्यवाद। मेरे लिए काम किया :) –

2

और भी आसान:

final AlertDialog alertDialog = new AlertDialog.Builder(context).setView(v) 
       .setPositiveButton(android.R.string.ok, null) 
       .setNegativeButton(android.R.string.cancel, null) 
       .show(); 

     Button b = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
     b.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 
       //Do Your thing 
      } 
     }); 
+0

यह सबसे अच्छा जवाब है – pellyadolfo

संबंधित मुद्दे