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

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

| 我在一页中有一个按钮,当我单击该按钮时,  能够通过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     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-