当从一种意图转到另一种意图并且数据来自服务器时,在单击按钮时显示进度条

问题描述

| 我在一页中有一个按钮,当我单击该按钮时,  能够通过Intent()进行其他活动,但是onbuttonclick()  我要在微调器中的那个活动数据中进行哪个活动 来自服务器的意思是单击按钮 我从server.spinner上加载了数据,所以移动按钮点击活动需要花费时间 其他活动,因此我想在单击按钮时显示进度栏 直到数据不是来自服务器...如何实现这一目标..我想显示进度栏 在buttonclick页面上是指单击按钮时的第一次活动。 我的按钮单击代码如下。
cuurentloc.setOnClickListener(new View.OnClickListener()
        {
      public void onClick(View v) {
      Intent i = new Intent(MainMenu.this,currentlocmap.class);
    startActivity(i);

     }
      });
实际上,我知道异步任务,但是使用该任务,我将能够在第二个活动中显示进度条,我想在第一个活动中显示进度条,直到在第二个活动中未加载数据为止,因此我希望在第一个活动的按钮上方显示进度条,在第二个活动中加载数据时,该数据将移至第二个活动。     

解决方法

        您需要使用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;
             }
          }


    }

}
谢谢 迪帕克     ,        看一下这段代码
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.
    ,        由于您熟悉AsyncTask,因此可以以第一个答案为基础。您可以让AsyncTask执行工作以检索您在第一个活动中所需的任何数据。在此过程中,您将显示进度栏。 AsyncTask完成后,您将删除进度条,将数据放入捆绑包中(通过调用putExtras),并出于启动第二个活动的目的而将其发送出去。     ,        您可以在currentlocmap类中使用
ProgressBar
ProgressDialog
。 为此使用
AsyncTask
类,并在获取数据时使用
setContentView()
设置布局并关闭
ProgressDialog
。 请参阅以下链接: 从服务器获取数据并在获取数据时刷新UI? 如何在Android中动态启动和完成progressBar     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...