2017-08-16 6 views
-1

ログインが成功したときにプログレスバーを作ってみたいが、試してみる。クラッシュするか、私のコードが間違っています。私はそれを修正するのを助けてください。そして、私はどこに進捗バーをxmlに入れなければならないのか分かりません。私はプログレスバーのためだけに新しいレイアウトを作らなければなりませんか? ログイン時にプログレスバーを作る方法

この

はそれがあなたのコードにこれを実装した後、私のactivity.java

public class MainActivity extends Activity { 

private AlertDialog.Builder alertDialogBuilder; 
Button btnSignIn,btnSignUp; 
LoginDataBaseAdapter loginDataBaseAdapter; 
ProgressBar progressBar; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    alertDialogBuilder = new AlertDialog.Builder(this); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // create a instance of SQLite Database 
    loginDataBaseAdapter=new LoginDataBaseAdapter(this); 
    loginDataBaseAdapter=loginDataBaseAdapter.open(); 

    // Get The Refference Of Buttons 
    btnSignIn=(Button)findViewById(R.id.buttonSignIN); 
    btnSignUp=(Button)findViewById(R.id.buttonSignUP); 

    // Set OnClick Listener on SignUp button 
    btnSignUp.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      /// Create Intent for SignUpActivity abd Start The Activity 
      Intent intentSignUP=new Intent(getApplicationContext(),SignUPActivity.class); 
      startActivity(intentSignUP); 
     } 
    }); 
} 
// Methos to handleClick Event of Sign In Button 
public void signIn(View V) 
{ 
    final Dialog dialog = new Dialog(MainActivity.this); 
    dialog.setContentView(login); 
    dialog.setTitle("Login"); 

    // get the Refferences of views 
    final EditText editTextUserName=(EditText)dialog.findViewById(R.id.username); 
    final EditText editTextPassword=(EditText)dialog.findViewById(R.id.password); 
    progressBar.setVisibility(View.GONE); 

    Button btnSignIn=(Button)dialog.findViewById(R.id.sumbit); 

    // Set On ClickListener 
    btnSignIn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      // get The User name and Password 
      String userName=editTextUserName.getText().toString(); 
      String password=editTextPassword.getText().toString(); 

      // fetch the Password form database for respective user name 
      String storedPassword=loginDataBaseAdapter.getSinlgeEntry(userName); 

      // check if the Stored password matches with Password entered by user 
      if(password.equals(storedPassword)) 
      { 

       Intent n = new Intent(MainActivity.this, MenuAwal.class); 
       n.putExtra("username", userName); 
       startActivity(n); 

       Toast.makeText(MainActivity.this, "Congrats: Login Successfull", Toast.LENGTH_LONG).show(); 
       dialog.dismiss(); 

       progressBar.setVisibility(View.VISIBLE); 

      } 
      else 
      { 
       Toast.makeText(MainActivity.this, "User Name or Password does not match", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 

    dialog.show(); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    // Close The Database 
    loginDataBaseAdapter.close(); 
} 

@Override 
public void onBackPressed() { 

    alertDialogBuilder.setTitle("Tutup Aplikasi"); 
    alertDialogBuilder.setMessage("Apakah Anda yakin ingin menutup aplikasi?") 
      .setCancelable(false).setPositiveButton("YA", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialogInterface, int i) { 
      finish(); 
     } 
    }) 
      .setNegativeButton("Tidak", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 
        dialogInterface.cancel(); 
       } 
      }).create().show(); 
} 
} 
+0

xmlのどこにプログレスバーがあるのか​​わからないということを意味しますか? –

答えて

0

定義

private ProgressDialog myProgress;

そしてonCreate使用

myProgress = new ProgressDialog(context); 
myProgress.setTitle("Processing..."); 
myProgress.setMessage("Please wait..."); 
myProgress.setCancelable(false); 
myProgress.setIndeterminate(true); 

です:

loginbutton.setOnClickListener(new OnClickListener() { 

    public void onClick(View arg0) { 
     myProgress.show(); 
     // Retrieve the text entered from the EditText 
     usernametxt = username.getText().toString(); 
     passwordtxt = password.getText().toString(); 

     // Send data to Parse.com for verification 
     ParseUser.logInInBackground(usernametxt, passwordtxt, 
       new LogInCallback() { 
        public void done(ParseUser user, ParseException e) { 
          // If user exist and authenticated, send user to Welcome.class 
         if(user !=null){ 
         myProgress.dismiss(); 
         Intent intent = new Intent(
            LoginActivity.this, 
            AddUserPage.class); 
          startActivity(intent); 
          Toast.makeText(getApplicationContext(), 
            "Successfully Logged in", 
            Toast.LENGTH_LONG).show(); 
          finish(); 
        }else{ 
         myProgress.dismiss(); 
         Toast.makeText(getApplicationContext(), "No such user", Toast.LENGTH_LONG).show(); 
         username.setText(""); 
         password.setText(""); 
        }} 
       }); 
    } 
}); 
0

、あなたのMainActivityクラスにこのBaseActivityクラスを拡張

public class BaseActivity extends AppCompatActivity{ 
public ProgressDialog prsDlg; 

@Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     prsDlg = new ProgressDialog(this); 
} 

public void showProgressDialog() { 

     prsDlg.setMessage("Please wait..."); 
     prsDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     prsDlg.setIndeterminate(true); 
     prsDlg.setCancelable(false); 
     prsDlg.show(); 
    } 

    public void dismissProgressDialog() { 
     if(prsDlg!=null){ 
      if (prsDlg.isShowing()) { 
       prsDlg.dismiss(); 
      } 
     } 

    } 
} 

のように見えたBaseActivity.javaクラスを作成します。

public class MainActivity extends BaseActivity { 

は今showProgressDialogを(使用)dismissProgressDialog()メソッド活動。それはあなたのすべての活動からの再利用を可能にします。
のような、

private class LoginAsyncTask extends AsyncTask<String, Void, String> { 
     @Override 
     protected String doInBackground(String... params) { 
      //your code 
     } 

     @Override 
     protected void onPreExecute() { 
      showProgressDialog(); 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      dismissProgressDialog(); 
     } 

     @Override 
     protected void onProgressUpdate(Void... values) { 
     } 
    } 
0

あなたはXMLで定義されたプログレスバーはその後、ちょうどあなたのクラスでの進捗状況の宣言を参照してくださいが、どのid.Iへの参照は、この理由を推測しないのonCreate also.Iでそれを定義してください持っている場合あなたはクラッシュしています。

関連する問題