2017-04-13 7 views
0

Ich mache eine Anmeldung Aktivität und ich will es den Fortschrittsdialog zeigen, wenn die Anmeldeschaltfläche gedrückt wird Ich erklärte, initialisiert und angerufen, aber es wird nicht angezeigt. Aber wenn ich die Fortschritte erstellen Dialog aufgerufen innerhalb des auf zeigte esFortschrittsdialog wird nicht angezeigt, wenn deklariert, initialisiert und aufgerufen

up Dies ist mein Code unten:

public class Login extends Activity { 
private EditText username, password; 
private Button login; 
private Button signup; 
String txtUsername, txtPassword, loggedin; 
private ProgressDialog mProgress; 
String titleId = "Logging in"; 
int id; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

    final DatabaseHelper db = new DatabaseHelper(this); 

    username = (EditText) findViewById(R.id.username); 
    password = (EditText) findViewById(R.id.password); 
    login = (Button) findViewById(R.id.login); 
    signup = (Button) findViewById(R.id.signup); 

    // Login button listener 
    login.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      showProgress(); 
      // Retrieve text from the EditText 
      txtUsername = username.getText().toString(); 
      txtPassword = password.getText().toString(); 

      if (txtUsername.isEmpty() && txtPassword.isEmpty()) { 
       mProgress.dismiss(); 
       Toast.makeText(getApplicationContext(),"Enter Username And Password", Toast.LENGTH_LONG); 

      } else { 
       User user = db.getUser(txtUsername, txtPassword); 
       id = user.getId(); 

       if (txtUsername.equalsIgnoreCase(user.getUsername()) 
         && txtPassword.equals(user.getPassword())) { 
        mProgress.dismiss(); 
        Intent intent = new Intent(Login.this, 
          AdministratorPage.class); 
        intent.putExtra("username", "username"); 
        intent.putExtra("id", "id"); 
        startActivity(intent); 
        Toast.makeText(
          getApplicationContext(), 
          "Successfully Logged In as " 
            + user.getUsername(), Toast.LENGTH_LONG) 
          .show(); 
        finish(); 
       } else { 
        mProgress.dismiss(); 
        Toast.makeText(getApplicationContext(), 
          "Usename Or Password Incorrect", 
          Toast.LENGTH_LONG).show(); 
        username.setText(""); 
        password.setText(""); 
       } 
      } 
     } 

    }); 

    // Sign up button listener 
    signup.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      showProgress(); 
      // Retrieve text from the EditText 
      txtUsername = username.getText().toString(); 
      txtPassword = password.getText().toString(); 

      if (txtUsername.isEmpty() && txtPassword.isEmpty()) { 
       mProgress.dismiss(); 
       Toast.makeText(getApplicationContext(), 
         "Enter Username And Password", Toast.LENGTH_LONG); 

      } else { 

       // Inserting Contacts 
       Log.d("Insert: ", "Inserting .."); 
       db.addUser(new User(txtUsername, txtPassword, "Y")); 

       // Reading all contacts 
       Log.d("Reading: ", "Reading all contacts.."); 
       List<User> users = db.getAllUsers(); 

       for (User cn : users) { 
        String log = "Id: " + cn.getId() + " ,Name: " 
          + cn.getUsername() + " ,Password: " 
          + cn.getPassword(); 
        // Writing Contacts to log 
        Log.d("Name: ", log); 
       } 
       mProgress.dismiss(); 
       Intent intent = new Intent(Login.this, 
         AdministratorPage.class); 
       startActivity(intent); 
       Toast.makeText(getApplicationContext(), 
         "Successfully Logged In", Toast.LENGTH_LONG).show(); 
       finish(); 
      } 
     } 

    }); 

} 

public void showProgress() { 
    // Initialize the Progress Dialog 
    mProgress = new ProgressDialog(Login.this); 
    mProgress.setTitle(titleId); 
    mProgress.setMessage("Logging In Please Wait..."); 

    mProgress.show(); 
} 
+0

Ich weiß nicht, was Sie erwarten, aber in jedem Fall in Ihrer if/else-Struktur, Sie sind den Dialog zu schließen ..... so denke ich, der Dialog zeigt sich einige Millisekunden, wird aber direkt entlassen .. – Opiatefuchs

+0

I Ich teste es auf einem Emulator, so dass es normalerweise angezeigt wird und ich kürzlich eine ähnliche Aktivität mit der gleichen Methode für einen Fortschrittsdialog geschrieben habe und es zeigte, aber nicht hier ist diese Aktivität –

Antwort

2

Wenn Sie einfach wollen Fortschritt Dialog verwenden Sie diesen Code in einem veriable schreiben soll.

ProgressDialog dialog; 

und in Singin ClickListener Schreiben Sie diesen Code.

dialog = ProgressDialog.show(Login.this, "Logging In", "Please wait...", true); 

und diese schreiben, wenn Sie

dialog.dismiss(); 
1

All Code entlassen wollen synchron laufen und Sie entlassen den Fortschrittsdialog, bevor das System eine Chance hatte, es tatsächlich zu zeigen.

Sie müssten alle Ihre Anmeldeinformationen in eine AsyncTask oder ähnliches einfügen, dann wird der Fortschrittsbalken angezeigt. In Ihrem Fall würde die AsyncTask jedoch so schnell enden, dass Sie den Fortschrittsdialog kaum bemerken würden. Aber wenn Sie den Benutzernamen/das Passwort für einen Backend-Server überprüfen würden, würde dies mit einer AsyncTask funktionieren.

Verwandte Themen