Как получить индикатор выполнения при нажатии кнопки? - PullRequest
0 голосов
/ 01 июня 2011

Я занимаюсь разработкой приложения для Android, в котором я передал строку из одного действия в другое, после того как получил ее из текстового поля редактирования, нажав кнопку «ОК». Строка - это URL-адрес, который дает RSS-канал.Поэтому для его загрузки требуется немного времени. Я хочу показать индикатор выполнения, чтобы интерфейс оставался интерактивным. Как можно получить индикатор выполнения или диалоговое окно хода выполнения при нажатии той же кнопки?

Мой фрагмент кода для действия:

 EditText Urlis=(EditText)findViewById(R.id.entry);
    final Button button = (Button) findViewById(R.id.ok);
    final Intent i=new Intent(this , RSSReder.class);
final String choice=Urlis.getText().toString();

    i.putExtra("key", choice);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            startActivity(i);
        }    
    });  
}

}

некоторая часть кода следующего действия

открытый класс RSSReder расширяет действие, реализует OnItemClickListener{

public String RSSFEEDOFCHOICE;
public final String tag = "RSSReader";
private RSSFed feed = null;


/** Called when the activity is first created. */

public void onCreate(Bundle abc) {
    super.onCreate(abc);
    setContentView(R.layout.next1);


    Intent i = getIntent();
    RSSFEEDOFCHOICE =i.getStringExtra("key");

    // go get our feed!
    feed = getFeed(RSSFEEDOFCHOICE);

    // display UI
    UpdateDisplay();

}

1 Ответ

2 голосов
/ 01 июня 2011

Вы можете отобразить ProgressDialog в NewActivity, если для получения RSS-каналов потребуется некоторое время: воспользуйтесь помощью следующего кода:

dialog = ProgressDialog.show(mParent,"","Loading,Please wait...", true);

final Thread t=new Thread(new Runnable() {

            public void run() {

                //get your rss feeds here
            }
        });
        t.start();

        Thread t1=new Thread(new Runnable() {

            public void run() {
                // TODO Auto-generated method stub
                try {
                    t.join();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                new Handler().post(new Runnable() {
                    public void run() {

                        dialog.cancel();
                                           UpdateDisplay();

                    }
                });

            }
        });
        t1.start();

Надеюсь, вы понимаете, что делает приведенный выше код.Настроить его немного и использовать ...:)

...