2017-04-13 15 views
0

サインインアクティビティを作成中です。サインインボタンが押されたときに進捗ダイアログを表示したいと宣言し、初期化し、呼び出しましたが表示されません。あなたはVeriableにこのコードを書くべき進捗状況ダイアログを使用するには、あなたシンプルたい場合宣言、初期化、呼び出されたときに進捗ダイアログが表示されない

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

私はあなたが期待していることは分かっていませんが、if/else構造のすべてのケースで、あなたはダイアログを閉じているので、ダイアログには数ミリ秒が現れますが、直接却下されます。 – Opiatefuchs

+0

'エミュレータでそれをテストしていますので、通常は表示されますが、最近私は進行ダイアログの同じメソッドで同様のアクティビティを書いていますが、ここには表示されませんでしたが、このアクティビティはありません –

答えて

2

: しかし、私は上の内の進捗ダイアログがそれを作成すると呼ばれる

を示した。これは、以下の私のコードです。

ProgressDialog dialog; 

とSingin ClickListenerこのコードを記述してください。

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

、あなたはあなたのすべてのコードが同期で実行され、システムが実際にそれを表示する機会があった前に、あなたは進捗ダイアログを却下されている

dialog.dismiss(); 
1

を却下したいときにこれを書きます。

あなたはすべてのログイン情報をAsyncTaskなどに入れなければならないので、進捗バーが表示されます。あなたのケースでは、AsyncTaskはすばやく終了しますので、進捗ダイアログにほとんど気付かないでしょう。しかし、バックエンドサーバーに対してユーザー名/パスワードをチェックすると、AsyncTaskで動作します。

関連する問題