2013-03-06 6 views
5

दिखा रहा है मैं एंड्रॉइड/जावा के लिए अपेक्षाकृत नया हूं। ढेर ओवरफ्लो के लिए धन्यवाद, मैं यहां पूछे गए प्रश्नों से बहुत कुछ सीखने में सक्षम था। हालांकि, अब मैं इस समस्या पर फंस गया हूँ।एकाधिक अलर्टडिअलॉग

मेरे पास एक पासवर्ड इनपुट AlertDialog है जो ऐप शुरू करते समय पॉप अप करता है। यह EditText से पासवर्ड पढ़ता है और फ़ाइल में संग्रहीत एक के साथ इसकी तुलना करता है। मुझे एक अतिरिक्त AlertDialog की आवश्यकता है जो एक अमान्य/गलत पासवर्ड प्रदान किए जाने पर दिखाया गया हो। यह भी मैंने लागू किया। रीसेट और पुन: प्रयास करें -

अब, यह दूसरा संवाद दो बटन है। मैं गतिविधि को फिर से पहला संवाद दिखाना चाहता हूं जब हम पर क्लिक करें। यह वह जगह है जहां मैं अनजान हूं। यदि कोई कामकाजी समाधान और थोड़ा सा स्पष्टीकरण प्रदान कर सकता है, तो मैं बहुत बाध्य होगा।

LayoutInflater li = LayoutInflater.from(context); 
View passView = li.inflate(R.layout.authdialog, null); 

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 

// set prompts.xml to alertdialog builder 
alertDialogBuilder.setView(passView); 

final EditText passInput = (EditText) passView.findViewById(
     R.id.editTextDialogUserInput); 
final TextView txtv = (TextView) findViewById(R.id.textv); 

// set dialog message 
alertDialogBuilder 
     .setCancelable(false) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface dialog, int id) { 
       String data = ""; 
       try { 
        FileInputStream fis = openFileInput("authfile"); 

        InputStreamReader in = new InputStreamReader(fis); 
        BufferedReader br = new BufferedReader(in); 
        data = br.readLine(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

       if (data.toString().equals(
         passInput.getText().toString())) { 
        txtv.setText("You Have Logged in"); 
       } else { 
        LayoutInflater ln = LayoutInflater.from(context); 
        View invalidView = ln.inflate(R.layout.invdialog, 
          null); 
        AlertDialog.Builder invalidDialogBuild = new AlertDialog.Builder(
          context); 
        invalidDialogBuild.setView(invalidView); 

        // set dialog message 
        invalidDialogBuild 
          .setCancelable(false) 
          .setPositiveButton(
            "Retry", 
            new DialogInterface.OnClickListener() { 

             public void onClick(
               DialogInterface dialog, 
               int id) { 
              dialog.cancel(); 
             } 
            }) 
          .setNegativeButton(
            "Reset", 
            new DialogInterface.OnClickListener() { 

             public void onClick(
               DialogInterface dialog, 
               int id) { 
              dialog.cancel(); 
             } 
            }); 

        dialog.cancel(); 

        AlertDialog invalidDialog = invalidDialogBuild 
          .create(); 

        // show it 
        invalidDialog.show(); 
       } 
      } 
     }) 
     .setNegativeButton("Cancel", 
       new DialogInterface.OnClickListener() { 

        public void onClick(DialogInterface dialog, int id) { 
         dialog.cancel(); 
        } 
       }); 

// create alert dialog 
AlertDialog alertDialog = alertDialogBuilder.create(); 

// show it 
alertDialog.show(); 
+1

मुझे पता है कि आपके पास पहले से ही संवाद आंशिक रूप से काम कर रहे हैं। लेकिन मुझे वास्तव में उस उद्देश्य के लिए संवाद का उपयोग न करने के लिए यह एक बेहतर उपयोगकर्ता अनुभव मिलता है। इसके बजाय मेरे पास उपयोगकर्ता नाम और पासवर्ड, सबमिट बटन इत्यादि के लिए 'एडिट व्यू' के साथ मेरी लॉगिन स्क्रीन 'गतिविधि' हो सकती है और मेरे पास 'टेक्स्ट व्यू' संदेश भी है जिसे मैं लाल और एक संदेश ('theTextView.setText ("") 'अगर व्यक्ति लॉगिन करने में विफल रहता है। इस तरह आप उपयोगकर्ता को चेतावनी देने के लिए बस एक संदेश पाठ को बदलना नहीं चाहते हैं, उपयोगकर्ता नाम अमान्य है – wired00

+0

दरअसल यह केवल एक व्यक्ति है, जहां उन्हें उपयोगकर्ता नाम नहीं चाहिए बल्कि पासवर्ड और मुझे स्क्रीन को 2 सेकंड या उससे कम के लिए स्क्रीन दिखाने के बजाय स्प्लैश स्क्रीन पर करने की आवश्यकता है, पासवर्ड से पूछा जाना चाहिए। आप दृष्टिकोण के माध्यम से भी प्राप्त कर सकते हैं साथ ही पॉपिंग के बजाए शीर्ष पर मौजूद टेक्स्टव्यू को बदलकर एक नया संदेश। लेकिन फिर कोई रीसेट विकल्प नहीं होगा। क्या मेरे पास एक चेतावनी संवाद में तीन बटन हो सकते हैं – GunJack

उत्तर

1

अपने संवाद के दो अलग-अलग विधि बनाएँ और उन्हें फोन के रूप में मैं नीचे दिए गए कोड की जांच में किया है:

यहाँ मेरी कोड है।

private void dialogShow() 
{ 
    LayoutInflater li = LayoutInflater.from(context); 
    View passView = li.inflate(R.layout.authdialog, null); 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 
    // set prompts.xml to alertdialog builder 
    alertDialogBuilder.setView(passView); 
    final EditText passInput = (EditText) passView.findViewById(R.id.editTextDialogUserInput); 
    final TextView txtv = (TextView) findViewById(R.id.textv); 
    // set dialog message 
    alertDialogBuilder.setCancelable(false) 
      .setPositiveButton("OK", new DialogInterface.OnClickListener() 
      { 
      public void onClick(DialogInterface dialog, int id) 
      { 
       String data = ""; 
       try 
       { 
      FileInputStream fis = openFileInput("authfile");       InputStreamReader in = new InputStreamReader(fis); 
       BufferedReader br = new BufferedReader(in); 
       data = br.readLine(); 
       } 
       catch (Exception e) 
       { 
        e.printStackTrace(); 
       } 
      if (data.toString().equals(passInput.getText().toString())) 
        { 
         txtv.setText("You Have Logged in"); 
        } 
        else 
        { 
        RetryDialog();//Call the dialog of retry 
        } 
       } 
      }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
      { 
       public void onClick(DialogInterface dialog, int id) 
       { 
        dialog.cancel(); 
       } 
      }); 
    // create alert dialog 
    AlertDialog alertDialog = alertDialogBuilder.create(); 
    // show it 
    alertDialog.show(); 
} 
//Shows the Retry Dialog 
private void RetryDialog() 
{ 
    LayoutInflater ln = LayoutInflater.from(context); 
    View invalidView = ln.inflate(R.layout.activity_main, null); 
    AlertDialog.Builder invalidDialogBuild = new AlertDialog.Builder(context); 
    // invalidDialogBuild.setView(invalidView); 
    // set dialog message 
    invalidDialogBuild.setCancelable(false) 
      .setPositiveButton("Retry", new DialogInterface.OnClickListener() 
      { 
       public void onClick(DialogInterface dialog, int id) 
       { 
        dialogShow(); 
        dialog.cancel(); 
       } 
      }).setNegativeButton("Reset", new DialogInterface.OnClickListener() 
      { 
       public void onClick(DialogInterface dialog, int id) 
       { 
        dialog.cancel(); 

       } 
      }); 

    AlertDialog invalidDialog = invalidDialogBuild.create(); 
    // show it 
    invalidDialog.show(); 

} 

संपादित: ThreeButtons साथ

संवाद।

/** 
* This is method to display dialog with three 
* button("Yes, No and Cancel button") 
*/ 
public void showThreeButtonDialog() 
{ 
    private AlertDialog m_alertDialog; 
    private AlertDialog.Builder m_builder = new AlertDialog.Builder(this); 
    m_builder.setTitle("Title Text"); 
    m_builder.setMessage("Dialog Message"); 
    m_builder.setPositiveButton("yes", new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface p_dialog, int p_which) 
     { 
      Toast.makeText(AlertDialogActivity.this, "Press Yes", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    m_builder.setNeutralButton("No"), new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface p_dialog, int p_which) 
     { 
      Toast.makeText(AlertDialogActivity.this, "Press No", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    m_builder.setNegativeButton("Cancel"), new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface p_dialog, int p_which) 
     { 
      Toast.makeText(AlertDialogActivity.this, "Press Cancel", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    m_alertDialog = m_builder.create(); 
    m_alertDialog.show(); 
} 
+0

इसे मिला। धन्यवाद एक टन। – GunJack

+0

आपका स्वागत है प्रिय ...... :) – GrIsHu

+0

एक और सवाल, है यह pos है सतर्क Dialog में 3 बटन रखने के लिए sible। – GunJack

1

Grishu मुझे यह करने के लिए हरा, मेरा कम से कम कम है ...

private void showLoginDialog(final Context context) { 
    LayoutInflater li = LayoutInflater.from(context); 
    View passView = li.inflate(R.layout.authdialog, null); 
    final EditText passInput = (EditText) passView.findViewById(R.id.editTextDialogUserInput); 
    final TextView txtv = (TextView) findViewById(R.id.textv); 

    new AlertDialog.Builder(context) 
     .setView(passView) 
     .setCancelable(false) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       String data = ""; 
       try { 
        FileInputStream fis = openFileInput("authfile"); 
         InputStreamReader in = new InputStreamReader(fis); 
        BufferedReader br = new BufferedReader(in); 
        data = br.readLine(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

       if (data.toString().equals(passInput.getText().toString())) { 
        txtv.setText("You Have Logged in"); 
       } else { 
        dialog.dismiss(); 
        showInvalidDialog(context); 
       } 
      } 
     }) 
     .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.dismiss(); 
      } 
     }) 
     .show(); 
} 

private void showInvalidDialog(final Context context) { 
    LayoutInflater ln = LayoutInflater.from(context); 
    View invalidView = ln.inflate(R.layout.invdialog, null); 

    new AlertDialog.Builder(context) 
     .setView(invalidView) 
     .setCancelable(false) 
     .setPositiveButton("Retry", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.dismiss(); 
       showLoginDialog(context); 
      } 
     }) 
     .setNegativeButton("Reset", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int id) { 
       dialog.dismiss(); 
      } 
     }) 
     .show(); 
} 

स्पष्टीकरण: अलग तरीकों जो एक दूसरे को कॉल कर सकते में दो संवादों के लिए कोड चलते हैं। कोड को छोटा और सुरुचिपूर्ण रखने के लिए बिल्डर पैटर्न का परिणामी उपयोग करें। Dialog.cancel() के बजाय dialog.dismiss() का उपयोग करें जब तक कि आप एक संभावित OnCancelListener को कॉल नहीं करना चाहते हैं।

+0

धन्यवाद, मुझे अब चाल मिल गई है। – GunJack

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