показывать прогресс-бар по нажатию кнопки при переходе от одного намерения к другому, и данные поступают с сервера - PullRequest
2 голосов
/ 30 мая 2011

У меня есть кнопка на одной странице, и когда я нажимаю на эту кнопку, я Я могу выполнить другое действие через Intent (), но onbuttonclick () в какой деятельности я иду в этих данных активности в счетчик исходя из сервера значит по нажатию кнопки Я загружаю эти данные на сервер с сервера. Так что для перемещения действия, связанного с нажатием кнопки, требуется время к другой деятельности, поэтому я хочу показать индикатор выполнения при нажатии моей кнопки и пока данные не приходят с сервера ... как этого добиться .. и я хочу показать индикатор выполнения при нажатии кнопки страница означает мое первое действие, когда я нажимаю кнопку.

Мой код нажатия на кнопку приведен ниже.

cuurentloc.setOnClickListener(new View.OnClickListener()
        {
      public void onClick(View v) {
      Intent i = new Intent(MainMenu.this, currentlocmap.class);
    startActivity(i);

     }
      });

На самом деле я знаю асинхронную задачу, но с ее помощью я смогу показать индикатор выполнения во 2-м упражнении, я хочу показать его в моем первом задании, пока данные не будут загружены во втором задании, поэтому я хочу, чтобы индикатор над полем над кнопкой был включен. первое действие, и когда данные загружаются во второе действие, они перемещаются во второе.

Ответы [ 4 ]

4 голосов
/ 30 мая 2011

Вы должны использовать AsyncTask, как я здесь направляю.Создайте асинхронную задачу в первом действии.При нажатии кнопки вызова события вызывается AsyncTaskВ фоновом режиме сделать загрузку данных с сервера.и onPostExecute запускает второе действие

cuurentloc.setOnClickListener(new View.OnClickListener()
        {
      public void onClick(View v) {
      new ProgressTask(MyClassName.class).execute(null);

     }
      });

Асинхронное задание

private class ProgressTask extends AsyncTask<String, Void, Boolean> {
        private ProgressDialog dialog;
        List<Message> titles;
        private ListActivity activity;
        //private List<Message> messages;
        public ProgressTask(ListActivity activity) {
            this.activity = activity;
            context = activity;
            dialog = new ProgressDialog(context);
        }



        /** progress dialog to show user that the backup is processing. */

        /** application context. */
        private Context context;

        protected void onPreExecute() {
            this.dialog.setMessage("Progress start");
            this.dialog.show();
        }

            @Override
        protected void onPostExecute(final Boolean success) {

                if (dialog.isShowing()) {
                dialog.dismiss();
            }

            Intent i = new Intent(MainMenu.this, currentlocmap.class);
    startActivity(i);

        }

        protected Boolean doInBackground(final String... args) {
            try{    
                //load data from server
             } catch (Exception e){
                Log.e("tag", "error", e);
                return false;
             }
          }


    }

}

Спасибо Deepak

1 голос
/ 02 июля 2012

посмотрите на этот код

package com.exercise.AndroidBackgroundThread;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class AndroidBackgroundThread extends Activity {

Thread backgroundThread;
TextView myText;
boolean myTextOn = true;
boolean running = false;

Handler handler = new Handler(){

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
//super.handleMessage(msg);
if (myTextOn){
myTextOn = false;
myText.setVisibility(View.GONE);
}
else{
myTextOn = true;
myText.setVisibility(View.VISIBLE);
}
}

};

void setRunning(boolean b){
running = b;
}

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

myText = (TextView)findViewById(R.id.mytext);

Toast.makeText(this, "onCreate()", Toast.LENGTH_LONG).show();       
}



@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();

Toast.makeText(this, "onStart()", Toast.LENGTH_LONG).show();

backgroundThread = new Thread(new Runnable(){

@Override
public void run() {
// TODO Auto-generated method stub
while(running){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
handler.sendMessage(handler.obtainMessage());
}
}

});

setRunning(true);
backgroundThread.start();
}

@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();

boolean retry = true;
setRunning(false);

while(retry){
try {
backgroundThread.join();
retry = false;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

Toast.makeText(this, "onStop()", Toast.LENGTH_LONG).show();

}
}
and for more detail look at this guide http://tech-aamir.blogspot.in/2012/06/how-to-make-progress-bar-when.html

Best of luck
aamirkhan i.
0 голосов
/ 30 мая 2011

Для построения первого ответа, так как вы знакомы с AsyncTask.Вы можете заставить AsyncTask выполнять работу по извлечению любых данных, которые вам понадобятся в вашей первой деятельности.И во время этого процесса вы отображаете свой индикатор выполнения.После завершения AsyncTask вы удаляете индикатор выполнения, помещаете свои данные в пакет (вызывая putExtras) и отправляете их с намерением начать 2-е действие.

0 голосов
/ 30 мая 2011

Вы можете использовать ProgressBar или ProgressDialog в классе currentlocmap.Для этого используйте класс AsyncTask, а при получении данных установите макет, используя setContentView(), и отклоните ProgressDialog.

.с сервера и обновлять пользовательский интерфейс при получении данных?

Как динамически запускать и завершать progressBar в Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...