[ログイン]ボタンをクリックしたときにProgressDialog
を表示したいのですが、別のページに移動するには時間がかかります。これどうやってするの?
AsyncTask で試してみてください
サンプルコード-
private class YourAsyncTask extends AsyncTask<Void, Void, Void> {
private ProgressDialog dialog;
public YourAsyncTask(MyMainActivity activity) {
dialog = new ProgressDialog(activity);
}
@Override
protected void onPreExecute() {
dialog.setMessage("Doing something, please wait.");
dialog.show();
}
@Override
protected Void doInBackground(Void... args) {
// do background work here
return null;
}
@Override
protected void onPostExecute(Void result) {
// do UI work here
if (dialog.isShowing()) {
dialog.dismiss();
}
}
}
ログインボタンアクティビティで上記のコードを使用します。そして、doInBackground
とonPostExecute
の処理を行います
更新:
ProgressDialog
はAsyncTask
と統合されており、タスクの処理に時間がかかると述べました。
更新:
ProgressDialog
クラスはAPI 26で非推奨になりました
ProgressDialog pd = new ProgressDialog(yourActivity.this);
pd.setMessage("loading");
pd.show();
必要なのはそれだけです。
ProgressDialog
を使用するには、以下のコードを使用します
ProgressDialog progressdialog = new ProgressDialog(getApplicationContext());
progressdialog.setMessage("Please Wait....");
ProgressDialog
を開始するには
progressdialog.show();
progressdialog.setCancelable(false);
は、作業が完了するまでProgressDialog
をキャンセルできないように使用されます。
ProgressDialog
を停止するには、次のコードを使用します(作業が終了したとき):
progressdialog.dismiss();`
進行ダイアログ に関しては、覚えておくべきポイントの1つは、別のスレッドで実行することです。 UIスレッドで実行すると、ダイアログは表示されません。
Android Threading を初めて使用する場合は、 AsyncTask について学習する必要があります。 痛みのないスレッド の実装に役立ちます。
サンプルコード
private class CheckTypesTask extends AsyncTask<Void, Void, Void>{
ProgressDialog asyncDialog = new ProgressDialog(IncidentFormActivity.this);
String typeStatus;
@Override
protected void onPreExecute() {
//set message of the dialog
asyncDialog.setMessage(getString(R.string.loadingtype));
//show dialog
asyncDialog.show();
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... arg0) {
//don't touch dialog here it'll break the application
//do some lengthy stuff like calling login webservice
return null;
}
@Override
protected void onPostExecute(Void result) {
//hide the dialog
asyncDialog.dismiss();
super.onPostExecute(result);
}
}
幸運を。
以下のようなactivity
の簡単なコーディング:
private ProgressDialog dialog = new ProgressDialog(YourActivity.this);
dialog.setMessage("please wait...");
dialog.show();
dialog.dismiss();
進捗ダイアログを宣言します。
ProgressDialog progressDialog;
進行状況ダイアログを開始するには:
progressDialog = ProgressDialog.show(this, "","Please Wait...", true);
進捗ダイアログを閉じるには:
progressDialog.dismiss();
oncreate()を呼び出すとき
new LoginAsyncTask ().execute();
ここでフローで使用する方法..
ProgressDialog progressDialog;
private class LoginAsyncTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
progressDialog= new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Please wait...");
progressDialog.show();
super.onPreExecute();
}
protected Void doInBackground(Void... args) {
// Parsse response data
return null;
}
protected void onPostExecute(Void result) {
if (progressDialog.isShowing())
progressDialog.dismiss();
//move activity
super.onPostExecute(result);
}
}
これはダイアログを使用する良い方法です
private class YourAsyncTask extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog = new ProgressDialog(IncidentFormActivity.this);
@Override
protected void onPreExecute() {
//set message of the dialog
dialog.setMessage("Loading...");
//show dialog
dialog.show();
super.onPreExecute();
}
protected Void doInBackground(Void... args) {
// do background work here
return null;
}
protected void onPostExecute(Void result) {
// do UI work here
if(dialog != null && dialog.isShowing()){
dialog.dismiss()
}
}
}
ProgressDialogはAndroid Oで正式に非推奨になりました。 https://github.com/Q115/DelayedProgressDialog のDelayedProgressDialogを使用してジョブを完了します。
使用法:
DelayedProgressDialog progressDialog = new DelayedProgressDialog();
progressDialog.show(getSupportFragmentManager(), "tag");
ProgressDialog pd = new ProgressDialog(yourActivity.this);
pd.show();
ProgressDialogはAPI 26以降廃止されました
それでもあなたはこれを使うことができます:
public void button_click(View view)
{
final ProgressDialog progressDialog = ProgressDialog.show(Login.this,"Please Wait","Processing...",true);
}
ProgressDialog dialog =
ProgressDialog.show(yourActivity.this, "", "Please Wait...");
final ProgressDialog loadingDialog = ProgressDialog.show(context,
"Fetching BloodBank List","Please wait...",false,false); // for showing the
// dialog where context is the current context, next field is title followed by
// message to be shown to the user and in the end intermediate field
loadingDialog.dismiss();// for dismissing the dialog
詳細情報 Android-progressDialog.show()とProgressDialog.show()の違いは何ですか?
簡単な方法:
ProgressDialog pDialog = new ProgressDialog(MainActivity.this); //Your Activity.this
pDialog.setMessage("Loading...!");
pDialog.setCancelable(false);
pDialog.show();
final ProgressDialog progDailog = ProgressDialog.show(Inishlog.this, contentTitle, "even geduld aub....", true);//please wait....
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Barcode_edit.setText("");
showAlert("Product detail saved.");
}
};
new Thread() {
public void run() {
try {
} catch (Exception e) {
}
handler.sendEmptyMessage(0);
progDailog.dismiss();
}
}.start();
ステップ1:XMLファイルの作成
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical">
<Button
Android:id="@+id/btnProgress"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:text="Progress Dialog"/>
</LinearLayout>
ステップ2:SampleActivity.Javaを作成する
package com.scancode.acutesoft.telephonymanagerapp;
import Android.app.Activity;
import Android.app.ProgressDialog;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.Button;
public class SampleActivity extends Activity implements View.OnClickListener {
Button btnProgress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnProgress = (Button) findViewById(R.id.btnProgress);
btnProgress.setOnClickListener(this);
}
@Override
public void onClick(View v) {
final ProgressDialog progressDialog = new ProgressDialog(SampleActivity.this);
progressDialog.setMessage("Please wait data is Processing");
progressDialog.show();
// After 2 Seconds i dismiss progress Dialog
new Thread(){
@Override
public void run() {
super.run();
try {
Thread.sleep(2000);
if (progressDialog.isShowing())
progressDialog.dismiss();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
}