2013-05-01 3 views
1

Progress bar не работает для меня. Я пытаюсь показать некоторые детали в процессе. Но я не могу, что я сделал неправильно? Пожалуйста, помогите мне.Android Progress Bar не работает для меня

активность Имя файла - MainActivity.java

package com.example.sqliteexample; 

import android.os.Bundle; 
import android.os.Handler; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.view.Menu; 

public class MainActivity extends Activity { 
private Handler handler = new Handler(); 
private ProgressDialog dialog; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    //dialog = ProgressDialog.show(this,getString(R.string.loading) ,getString(R.string.alignMsg)); 
    dialog = ProgressDialog.show(this,"Loading", "Loading the Image of the Day"); 
    Thread th = new Thread() 
    { 
     public void run() { 
      handler.post(
        new Runnable(){ 
         @Override 
         public void run() { 
          try { 
           Thread.sleep(10000); 
          } catch (InterruptedException e) { 
           e.printStackTrace(); 
          } 
          dialog.dismiss(); 
         }}); 
     }}; 
     th.start(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

}

+1

Что вы имеете в виду, не работает? –

+0

На дисплее я не вижу строку «Загрузка изображения дня». – 2013-05-01 18:04:11

+0

Также удалите строки, связанные с 'Thread th = new Thread() {', это совершенно бессмысленно. вы уже сделали другой поток, вызвав 'handler.post()'. BTW, приложение краш или сообщение что-нибудь в LogCat? – PhpXp

ответ

0

Попробуйте его с помощью handler.postDelayed:

dialog = ProgressDialog.show(this, 
     "Loading", "Loading the Image of the Day"); 
handler.postDelayed(runnable,10000); 
} 
Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     /* dismiss dialog here*/ 
     dialog.dismiss(); 

     handler.removeCallbacks(runnable); 
    } 
}; 

или вам нужно будет двигаться Thread.sleep(10000); внутри метода выполнения резьбы вместо внутри Runnable, который вы переходите на Handler.post метод как:

Thread th = new Thread() 
    { 
     public void run() { 
      /** call Thread.Sleep here... **/ 
      Thread.sleep(10000); 
      handler.post(
      ....your code here.... 
+0

ваше второе решение полезно, и теперь оно отлично работает. Спасибо. – 2013-05-02 05:06:44

0

handler определен в основном виде деятельности и, таким образом, будет работать в потоке пользовательского интерфейса. Вы просите спать в течение 10 секунд, и это не будет работать в потоке пользовательского интерфейса.

Если вы хотите показать индикатор выполнения и отпустить его через 10 секунд, используйте handler.postDelayed(Runnable r, long delayMillis).

Это код:

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    // dialog = ProgressDialog.show(this,getString(R.string.loading) ,getString(R.string.alignMsg)); 
    dialog = ProgressDialog.show(this, "Loading", "Loading the Image of the Day"); 
    handler.postDelayed(new Runnable() 
    { 
     @Override 
     public void run() 
     { 
      dialog.dismiss(); 
     } 
    }, 10000); 
} 

Надеется, что это было полезно.