Android 如何在从一个活动更改为另一个活动时显示ProgressDialog?
我想在我的活动a启动另一个活动B时显示一个PD。但是在onclick方法中,我的活动a必须在启动B之前做一些工作,而B也必须做一些工作,因为它必须为UI加载大量数据 我需要一个PD,该PD由用户在从活动a到活动B加载长安数据的所有过程中查看 你怎么能做到 我尝试在MyApplication.java上存储静态ProgressDialog,并使用以下方法:Android 如何在从一个活动更改为另一个活动时显示ProgressDialog?,android,progressdialog,Android,Progressdialog,我想在我的活动a启动另一个活动B时显示一个PD。但是在onclick方法中,我的活动a必须在启动B之前做一些工作,而B也必须做一些工作,因为它必须为UI加载大量数据 我需要一个PD,该PD由用户在从活动a到活动B加载长安数据的所有过程中查看 你怎么能做到 我尝试在MyApplication.java上存储静态ProgressDialog,并使用以下方法: public static void showProgressDialog(Context c) { pd = ProgressDia
public static void showProgressDialog(Context c) {
pd = ProgressDialog.show(c, c.getResources().getString(R.string.app_name),
c.getResources().getString(R.string.loading), true, false);
}
public static void dismissProgressDialog(){
pd.dismiss();
}
但它不起作用,它没有显示任何东西,我不知道为什么
如何通过简单的方式实现这一点我知道我可以用异步任务来完成,但这对我来说太难了,我无法理解我在这个网站和谷歌上找到的代码示例
欢迎使用代码示例
谢谢好吧,我同意@falmari的评论,最简单的方法是用异步任务实现它。因为AsyncTask管理UIThread和后台线程 我总是使用AsyncTask来实现这一点,但我不认为在这里粘贴我的代码会对您有所帮助,因为您的需求可能与我的不同,但我认为您可以这样做 将AsyncTask子类化并重写这些方法
- onPreExecute()。。。因为这个 方法在ui线程中调用 您可以创建并显示进度 对话李>
- doInBackground(可运行任务)。。。
此方法在后台运行
这样你就不用担心了
关于线程处理。。。你们所有人
必须做的是艰苦的工作
(处理数据、下载数据等)
并将任何更新发布到 你想要的 - onProgressUpdate(对象…值)。。。
此方法也在ui中调用
线程,这样您就可以更新您的
带有进度的进度对话框
价值观 - onPostExecute(对象结果)。。。
此方法在ui线程中运行
因此,您可以显示操作
结果并取消进度
对话框,并调用您的新活动
您可以在布局中添加进度条:
<FrameLayout
android:id="@+id/mapLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
//your layout
</LinearLayout>
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" >
</ProgressBar>
</FrameLayout>
活动开始时停止进度条:
@Override
protected void onStart() {
//your code
mProgress.setVisibility(View.GONE);
super.onStart();
}
这有三种方法。
我知道我可以用异步任务来完成,但这对我来说太难了
对不起,这就是实现的方法。你能给我一个简单的代码示例吗?我不明白。在我的活动A和活动B上执行的代码完成时,如何知道该类?我不明白这个班怎么会知道。如果它不知道A和B必须完成的任务何时结束,那么progressdialog将永远显示。你告诉我,我可以在这里完成所有操作,但这是不可能的,因为有很多操作,我的应用程序的设计方式是这些操作必须在A和B上完成。我不能在这里移动。A和B有数千行代码。将需要数周或数月的时间才能移动到这里,当然,如果我必须将操作移动到此处,我将面临许多难以解决的错误和问题如果不将操作放在此类上,则无法执行progressdialog:S???
@Override
protected void onStart() {
//your code
mProgress.setVisibility(View.GONE);
super.onStart();
}