我不知道如何管理对话框而不使用configChanges来指定要手动处理方向更改。 因此,可以说,你有这样的AndroidManifest:为什么不会在onDestroy或onPause中解雇Dialog,removeDialog或dialog.dismiss工作?

package="com.example.testandroid"

android:versionCode="1"

android:versionName="1.0" >

android:minSdkVersion="8"

android:targetSdkVersion="15" />

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name=".MainActivity"

android:label="@string/title_activity_main" >

借此MainActivity.java:

package com.example.testandroid;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.AlertDialog.Builder;

import android.app.Dialog;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;

import android.view.View;

public class MainActivity extends Activity {

private final static String TAG = "MainActivity";

Dialog mDialog = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Log.d(TAG, "onCreate");

setContentView(R.layout.activity_main);

}

public void doShowDialog(View b) {

Log.d(TAG, "doShowDialog");

showDialog(1);

}

private void tryDismiss() {

Log.d(TAG, "tryDismiss");

try {

dismissDialog(1);

removeDialog(1);

mDialog.dismiss();

} catch(IllegalArgumentException ex) {

Log.e(TAG, ex.getMessage());

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.activity_main, menu);

return true;

}

@Override

protected void onPause() {

tryDismiss();

super.onPause();

Log.d(TAG, "onPause");

}

@Override

protected Dialog onCreateDialog(int dialog) {

Builder b = new AlertDialog.Builder(this);

b.setTitle("Hello").setMessage("Waiting..");

mDialog = b.create();

return mDialog;

}

}

和这个布局(main.xml中)

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Open Dialog"

android:onClick="doShowDialog"

/>

它似乎没有不重要的是,如果您从onDestroy或onPause调用,对话框将在方向切换后显示备份。但为什么?我告诉它走开。如果调用removeDialog/dismissDialog,则在方向更改之前调用它时不执行任何操作。我无法弄清楚为什么会这样。摆脱的唯一途径这是我所知道的是处理方向通过

android:configChanges="keyboardHidden|orientation"

我知道工作的新方法是使用FragmentDialog东西,我还没有升级到尚未改变自己和我不准备重写我的整个应用程序。看起来很奇怪,这不起作用。

这只是我在我的应用程序中的用户可以从远程服务器请求某些数据(以更新微调器的数据)的实际问题的示例,并且如果它们切换方向,则加载对话框将永远不会消失,除了使用android:configChanges选项处理方向更改之外,似乎还没有解决此问题的方法。我可以做,但我必须这样做似乎很荒谬。

- 更新 - 删除了按钮以关闭对话框,因为它没有必要,并且由于对话框位于顶部,因此无法单击它。

要重现刚刚启动的应用程序,请单击打开对话框的按钮,然后旋转手机。

+0

请清楚地了解你的重现步骤。你加载它的肖像。点击按钮显示对话框,然后点击停止对话框,然后切换到横向并显示出来? –

2012-07-06 20:03:16

+0

没有看到您将参数分配给doDismiss(l)的位置?你是如何初始化的?这个价值是什么? –

2012-07-06 20:05:13

+0

您是否设置了断点以确定这些方法正在被调用?检查参数是否真的与您创建的对话框匹配。 –

2012-07-06 20:06:42

dismiss和remove_为什么不会在onDestroy或onPause中解雇Dialog,removeDialog或dialog.dismiss工作?...相关推荐

  1. android ondestroy service,onDestroy在android中运行时,MainActivity泄露了ServiceConnection。如何防止这个错误?...

    我正在制作一个android-wear应用程序,主要功能在 ConnectionService 类,它基本上处理与websocket的通信.我的问题是,如果我用android-wear设备上的按钮退出 ...

  2. android中内存泄露,Android中的内存泄露

    编辑推荐: 本文来自于csdn,本文主要从java的内存模型讲起,最终举出几个内存泄露的例子和解决方案. java运行时内存模型 具体信息:http://gityuan.com/2016/01/09/ ...

  3. Android 解决OutOfMemory,从避免内存溢出开始

    前言:一个刚上班和三年工作经验的安卓程序猿,做同一个项目.如果只从表面上看,并没有什么区别.但从项目的性能.稳定性.扩展性等方面来观察的话,差别不要太大.言归正传,今天我们来说一下安卓开发中很常见的问 ...

  4. Android 灭屏和亮屏的监听

    采用动态注册广播的方式对灭屏和亮屏进行监听 1.创建receiver class ScreenStatusReceiver extends BroadcastReceiver { ​String SC ...

  5. Android 面试题大全 android中级----进阶------ 知识点

    // Android 的中等进阶知识点理解 1 内存泄漏是什么 ?? 2 Android oom 内存溢出 ?? 3 Retrofit详解 ?? 4 Rxjava详解 ?? 5 Android 性能优 ...

  6. Android 如何正确的重写 onDestroy() 方法

    不知道大家在写 Android 的时候有没有遇到过这样的一个疑惑:当你在重写 onDestry() 的方法时,有没有犹豫过,我们自己的方法,是应该放在 super.onDestroy() 方法的上面呢 ...

  7. Android --- Dialog 中 Dismiss 和 Cancel 的解释

    Android Dialog有两个很相似的方法: Dialog.cancel()和Dialog.dismiss(); 这两个方法区别在于: 1.Dialog.cancel()方法中会调用Dialog. ...

  8. dismiss android,[转]Android对话框中dismiss和cancel、hide的区别

    dismiss和cancel在我们看来两者效果都是一样的,其实看下源码就知道cancel肯定会去调dismiss的,不过如果我们调用的cancel的话就可以监听DialogInterface.OnCa ...

  9. onCreate onStart onResume onStop onPause onDestroy onRestart onWindowFocusChanged

    一.函数调用情形 1.启动游戏 onCreate onStart onResume onWindowFocusChanged 2.锁屏(已启动游戏) onPause onStop onWindowFo ...

  10. Activity onDestroy方法未能及时执行原因

    网上出现的情况也不少,大致看了下主要有以下几类: AndroidManifest 针对某个activity 设置的theme为 @android:style/Theme.NoTitleBar 在目前项 ...

最新文章

  1. mysql主从复制及失败切换
  2. 配置连接池druid
  3. python学习笔记(05)
  4. awk和cut分割字符区别
  5. 深度解读 OpenYurt:从边缘自治看 YurtHub 的扩展能力
  6. SCCM 2012R2 部署教程之二——部署数据库
  7. Android之自定义带圆角的水纹波效果
  8. 如何查询日志文件中的所有ip,正则表达式
  9. 【翻译】Ext JS 6早期访问版本发布
  10. Java 平衡二叉树和AVL
  11. 管理感悟:学会推论及验证
  12. linux修改sybase数据库密码,巧用Sybase数据库的超级用户密码
  13. java docx4j 使用教程_使用Docx4j操作PPT指南系列(二)
  14. vue循环阿里巴巴矢量图标
  15. 简单管理Android手机程序的小程序
  16. SpringBoot+Vue 微信支付API V3
  17. 视觉识别真是火得发烫,依图科技宣布完成2亿美元融资
  18. 十首中国现代诗,很美!
  19. 软件质量管理-6-质量管理
  20. 前端实现AWS s3亚马逊云储存上传资源

热门文章

  1. jzoj6152. 【GDOI2019Day2模拟2019.4.29】Endless (倍增维护并查集,平方串)
  2. FreeRTOS学习笔记(11)——CPU使用率统计
  3. [IDE]webstorm安装并配置sass踩坑(windwos)
  4. 权变理论计算机管理理论,权变理论是什么意思?权变管理理论的介绍与应用
  5. qchart 怎么点击一下 出一条线_陈奕迅唱歌技巧,学好这几点,你也能唱出更具有穿透力和磁性的声音...
  6. 2016年Godaddy最新域名转出教程
  7. lintcode1485. 圣杯咒语
  8. DC-DC升压IC测试及EN脚讲解
  9. minio-operator部署minio服务,并用Java客户端访问minio
  10. alert(1) (haozi.me)靶场练习