`
zhhaogen
  • 浏览: 13544 次
  • 性别: Icon_minigender_1
  • 来自: 未知
社区版块
存档分类
最新评论

android ProgressDialog#hide不隐藏问题

阅读更多

环境

  <uses-sdk
        android:minSdkVersion="23"
        android:targetSdkVersion="23" />

 真机Android 7.1.2

测试代码

protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		this.setContentView(R.layout.activity_main);   
		p1=new ProgressDialog(this);
		p1.setMessage("我是进度对话框1"); 
		p1.show(); 
		this.requestPermissions(new String[]{permission.WRITE_EXTERNAL_STORAGE}, 20);  
		new Thread()
		{ 
			public void run()
			{
				try
				{
					Thread.sleep(1000);
				} catch (InterruptedException e)
				{
				}
				runOnUiThread(new Runnable()
				{
					public void run()
					{
						p1.hide();
					}
				});
			} 
		}.start();
	
	}

 

 问题截图

 

 

 

操作系统授权后,对话框并没有被隐藏(进度动画也卡住)


 解决方法

使用dismiss方法替换hide方法能解决

其他情况

难道是由于其他对话框(系统授权框)遮住ProgressDialog,所以被认作是hide了?

遮住情况测试代码

 

p1=new ProgressDialog(this);
		p1.setMessage("我是进度对话框1"); 
		p1.show();  
		p2=new ProgressDialog(this);
		p2.setMessage("我是进度对话框2"); 
		p2.show();  
		new Thread()
		{ 
			public void run()
			{
				try
				{
					Thread.sleep(1000);
				} catch (InterruptedException e)
				{
				}
				runOnUiThread(new Runnable()
				{
					public void run()
					{
						p1.hide();
					}
				});
			} 
		}.start();

 p2隐藏后,并没有出现p1继续显示情况。看来貌似只有系统授权对话框只会出现这种情况,实际还要看系统代码

 

  • 大小: 60.3 KB
  • 大小: 31.3 KB
分享到:
评论

相关推荐

    自定义ProgressDialog实现暂时隐藏进度值并显示等待状态

    在Android开发中,ProgressDialog是一种常见的UI...自定义ProgressDialog的实现不仅限于隐藏进度值,还可以扩展以实现更多的功能,如添加自定义动画、更改样式等,这完全取决于你的创造力和对Android UI组件的理解。

    子线程控制ProgressDialog的可见性

    然而,由于Android的主线程(UI线程)与子线程之间的交互限制,直接在子线程中控制ProgressDialog的显示和消失可能会遇到问题。这篇博客将探讨如何在子线程中正确地控制ProgressDialog的可见性,同时遵循Android的UI...

    主线程控制ProgressDialog的可见性

    在Android开发中,ProgressDialog是一种常用的UI组件,用于在执行耗时操作时向用户显示进度或指示等待状态。本文将深入探讨如何在主线程中控制ProgressDialog的可见性,并结合`Looper`和`Handler`来理解其工作原理。...

    Android安卓经典设计例程源代码-ProgressDialogSample.rar

    `dismiss()`方法用于关闭ProgressDialog,`hide()`方法则隐藏ProgressDialog但不销毁,以便之后再次显示。 5. 自定义ProgressDialog: 通过继承ProgressDialog并重写相关方法,可以实现自定义的外观和行为,例如...

    android--开发中WebView的使用.pdf

    `ProgressDialog`通过`pd.show()`和`pd.hide()`方法来控制显示和隐藏,同时可以通过`pd.setProgressStyle(ProgressDialog.STYLE_SPINNER)`设置其样式。 为了使WebView可以运行JavaScript代码,必须启用JavaScript...

    android开发中WebView的使用

    这里值得注意的是,使用`hide()`而非`dismiss()`或`cancel()`来隐藏ProgressDialog,因为后者会完全结束对话框,而`hide()`只是使其不可见,这样在下次加载时,ProgressDialog的小圆圈仍能正常动画。 在处理网页...

    android开发中WebView的使用.pdf

    在Android开发中,WebView是一个非常重要的组件,它允许开发者在应用程序内部嵌入网页内容,从而实现类似浏览器的功能。WebView基于WebKit渲染引擎,因此它可以很好地支持HTML、JavaScript和CSS等网络技术,极大地...

    android--开发中WebView的使用.docx

    在Android开发中,WebView是一个非常重要的组件,它允许我们在应用程序中内嵌网页浏览功能,相当于在应用内部构建了一个小型的浏览器。WebView使用WebKit渲染引擎,能够很好地支持HTML、CSS、JavaScript等各种Web...

    Android短信验证码及自定义GUI短信验证

    在Android开发中,短信验证码是一种常见的用户身份验证方式,它为用户提供了一种安全且便捷的登录或注册途径。本文将详细讲解如何在Android应用中实现短信验证码的获取以及自定义GUI短信验证的过程,同时也会涉及...

    所有Dialog对话框.zip

    - `show()` 方法用于显示Dialog,`hide()` 方法则用于隐藏。在Activity中,还需要确保Activity处于活动状态时才能显示Dialog,否则可能导致异常。 5. **监听Dialog的事件**: - `setPositiveButton()`, `...

    安卓app开发项目-所有Dialog对话框(源码).zip

    需要注意的是,`dismiss()`方法会彻底移除Dialog,而`hide()`仅使其不可见但保持实例。 在实际的安卓app开发中,熟练掌握Dialog的使用能极大地提升用户体验。通过这个项目提供的源码,开发者不仅可以了解Dialog的...

    nl.creativeskills.cordova.waitingdialog:用于创建等待对话框的 Cordova 插件

    这个插件会利用 Android 的 `ProgressDialog` 或 `ProgressBar` 类来实现这一效果。在原生代码中,插件会监听 JavaScript 调用,并通过 Cordova 的桥接机制与 JavaScript 进行通信。 **iOS 实现** 对于 iOS,等待...

Global site tag (gtag.js) - Google Analytics