Я сделал приложение, которое может загрузить некоторые данные в мою базу данных. В Activity, в которой пользователь вводит данные для загрузки, я создал ProgressDialog. ProgressDialog создается внутри метода onClick().ProgressDialog не начал работу в основной теме
Теоретически, он будет создан, потому что я не пытаюсь сделать ProgerssDialog в потоке, отличном от Main UI Thread. Тем не менее, это не отображается. Я не знаю почему.
package com.example.demoapp;
import android.widget.*;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener{
private EditText planID, name, number, address, handsetValue, planAmount, validity, pass, confirm_pass;
private Button call;
private SharedPreferences prefs;
private SharedPreferences.Editor editor;
private String response;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
prefs = getSharedPreferences("PREF", MODE_PRIVATE);
boolean startup = prefs.getBoolean("FIRST_STARTUP", true);
if(startup)
{
planID = (EditText) findViewById(R.id.planIDET);
name = (EditText) findViewById(R.id.nameET);
number = (EditText) findViewById(R.id.contactET);
address = (EditText) findViewById(R.id.addressET);
handsetValue = (EditText) findViewById(R.id.handsetValueET);
planAmount = (EditText) findViewById(R.id.planAmountET);
validity = (EditText) findViewById(R.id.validityET);
pass = (EditText) findViewById(R.id.editText1);
confirm_pass = (EditText) findViewById(R.id.editText2);
call = (Button) findViewById(R.id.submit_Button);
planID.setText("");
name.setText("");
number.setText("");
address.setText("");
handsetValue.setText("");
planAmount.setText("");
validity.setText("");
pass.setText("");
confirm_pass.setText("");
call.setOnClickListener(this);
}
else
{
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
finish();
}
}
@Override
public void onClick(View v) {
if(pass.getText().toString().equals(confirm_pass.getText().toString()))
{
ProgressDialog progress = ProgressDialog.show(v.getContext(), "Please wait...", "Connecting to server", true, true);
String query = "INSERT INTO user_info (name, password, address, plan_id, contact, handset_value, plan_amount, validity) "
+ "VALUES('" + name.getText() + "','"+ pass.getText() +"','" + address.getText() + "','" + planID.getText() + "','" + number.getText() + "','" + handsetValue.getText() + "','" + planAmount.getText() + "','" + validity.getText() + "');";
ConnectDBThread connect = new ConnectDBThread(query, Resources.INSERT);
Thread t1 = new Thread(connect);
t1.start();
//####################################//
Log.i("onClick() ThreadName",String.valueOf(Thread.currentThread().getId()));
while(true)
{
try {
Thread.sleep(100);
} catch (InterruptedException e)
{e.printStackTrace();}
if(Resources.serverResponse!=null)
{
Toast.makeText(this, "Registered Successfully", Toast.LENGTH_LONG).show();
Log.i("SERVER", Resources.serverResponse);
prefs = getSharedPreferences("PREF", MODE_PRIVATE);
editor = prefs.edit();
editor.putBoolean("FIRST_STARTUP", false);
editor.putString("USERNAME", name.getText().toString());
editor.putString("USERPASS", pass.getText().toString());
editor.commit();
//--- PROGRESSBAR STOPPED
progress.dismiss();
break;
}
}//LOOP
}
else
Toast.makeText(this, "Password mismatch!", Toast.LENGTH_LONG).show();
}// onClick()
}
Здесь ConnectDBThread является реализацией Runnable интерфейс, который подключается к серверу и отправляет запрос вместе с данными.
Если я создал ProgressDialog вне инструкции If в onClick(), приложение сначала выполнит запрос. После завершения запроса он показывает ProgressDialog.
Пожалуйста, помогите мне. Спасибо.
вы сделали необходимые проверки, если кнопка идентификатор одного нажатия кнопки мыши, что R.id.submit_Button? Выполняется ли Thread? Правильно ли это проход, так что введено? – mobilepotato7
Да. Все работает нормально. Данные надежно загружаются в базу данных. Но ProgressDialog не отображается. – user3756173
попробуйте отладить его, потому что я проверил код, и я попытался создать диалог прогресса в onClick так же, как и вы, и его работу в моем коде. –