Использование ProgressDialog в начале упражнения «Основной» с вызовом имеет несколько функций - PullRequest
0 голосов
/ 20 марта 2012

Я действительно ищу, как отобразить загрузку в начале моего действия "Main", но в то же время это действие должно вызывать некоторую функцию, поэтому я использовал этот код:

ProgressDialog bar;

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 

        loading();
}


private void loading() {
          bar = ProgressDialog.show(this, "Please wait",
                  "Long operation starts...", true);

          new Thread((new Runnable() {
              @Override
              public void run() {
                  bar.setMessage("Loading...");
                  initLocalisation();
                      initTabhost();
              }
          })).start();
  }

public void msgbox(String str) {
        Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
    }

На самом деле это показывает мне следующую ошибку:

FATAL EXCEPTION: Thread-99
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:121)
at android.widget.Toast$TN.<init>(Toast.java:317)
at android.widget.Toast.<init>(Toast.java:91)
at android.widget.Toast.makeText(Toast.java:233)
at com.main.Main.msgbox(Main.java:519)
at com.main.Main.updateWithNewLocation(Main.java:148)
at com.main.Main.initLocalisation(Main.java:204)
at com.main.Main$4.run(Main.java:172)
at java.lang.Thread.run(Thread.java:856)

1 Ответ

0 голосов
/ 20 марта 2012

Вы не можете получить доступ к пользовательскому интерфейсу из не-пользовательского потока. Вам необходимо прочитать этот документ под названием Безболезненная резьба .

...