新建了一个Android Studio工程,在MainActivity的主界面中添加了两个按钮,点击其中一个按钮用来启动 NormalActivity,点击另一按钮用来启动DialogActivity. 其中,NormalActivity和DialogActivity都是很简单的界面,只是在AndroidManifest.xml中,对DialogActivity添加主题 android:theme="@android:style/Theme.Dialog, AndroidManifest.xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.zhangsir.activitylifecycletest"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".NormalActivity" ></activity><activity android:name=".DialogActivity"android:theme="@android:style/Theme.Dialog" ></activity></application>
</manifest>

MainActivity的 onCreate()函数如下:

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button startNormalActivity=(Button)findViewById(R.id.start_normal_activity);Button startDialogActivity=(Button)findViewById(R.id.start_dialog_activity);startNormalActivity.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View view) {Intent intent=new Intent(MainActivity.this ,NormalActivity.class);startActivity(intent);}});startDialogActivity.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent=new Intent(MainActivity.this,DialogActivity.class);startActivity(intent);}});}

DialogActivity 定义如下:

public class DialogActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_dialog);}
}

程序主界面如下:

当单击 'START DIALOGACTIVITY' 按钮时,程序便停止运行了。百思不得其解,后来终于在网上别人的回答中找到了灵感:

解决方法1

将DialogActivity的super class改成 Activity 即可。

解决方法2

将AndroidManifest.xml中 .DialogActivity 的theme改成如下样式:

<activity android:name=".DialogActivity"android:theme="@style/Theme.AppCompat.Dialog" >
</activity>

由于在较新版本的Android Studio中,默认的Activity的super class 基本都是 AppCompatActivity,所以建议保留默认生成的 super class,采用方法2来解决程序崩溃的问题。

转载于:https://www.cnblogs.com/dongling/p/6476308.html

Android学习笔记(5)----启动 Theme.Dialog 主题的Activity时程序崩溃的解决办法相关推荐

  1. Maya2016.5、2018、2019更高版启动卡住(附带很多acwebbrower.exe程序)的解决办法)

    Maya2016.5.2018.2019更高版启动卡住(附带很多acwebbrower.exe程序)的解决办法 问题原因 解决方法 问题原因 Maya在2016版本后增加了Cloud登入的方法,这个方 ...

  2. Android学习笔记(七):多个Activity和Intent

    根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...

  3. 【安全牛学习笔记】CSRF跨站请求伪造攻击漏洞的原理及解决办法

    CSRF跨站请求伪造攻击漏洞的原理及解决办法 CSRF,夸张请求伪造漏洞 漏洞的原理及修复方法 1.常见的触发场景 2.漏洞原理:浏览器同源策略 3.DEMO 4.漏洞危害 5.如何避免&修复 ...

  4. android学习笔记---1.为应用添加新的Activity,中使用Intent(意图),结果码,请求码,得到新打开Activity 关闭后返回的数据,Bundle类的作用

    1.为应用添加新的Activity 第一步:新建一个继承Activity的类,如:NewActivity public class NewActivity extends Activity {     ...

  5. Android学习笔记(十二)——Fragment向Activity传递消息

    点击Fragment中"给Activity传递消息"按钮,使Activity中TextView中原本的text="hello"换成"你好" ...

  6. android学习笔记---33_为应用添加多个Activity与参数传递

    33_为应用添加多个Activity与参数传递 ------------------------------------------ 1.一个activity代表一个的窗口,那么一个应用中往往会有很多 ...

  7. android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题

    50_样式与主题 android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题 2013/5/12 50_样式与主题 ----------------- android样式和主题(st ...

  8. android学习笔记---34_Activity的启动模式

    2013-04-04 ------------- 34_Activity的启动模式 --------------------------------------------------------- ...

  9. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)

    Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...

最新文章

  1. TSNE-原理与实现
  2. python中字符串的rstrip()方法
  3. VLC搭建RTSP服务器的过程 -测试通过
  4. c语言的语言扩展的数据类型,C语言之数据类型
  5. 非阻塞IO与异步IO
  6. linux svn同步到本地目录,LINUX中SVN服务的搭建与实现SVN 自动同步到web目录,SVN自动启动...
  7. Android 底部上拉抽屉view
  8. easyphp环境配置
  9. UI实用素材|购物车界面不同设计,可临摹的好模板
  10. 如何取得GridView被隐藏列的值
  11. ce标志cad_CAD标识
  12. scrapy_redis爬取统计局的城乡代码,以目录文件夹形式生成,同时最后保存在excel和redis数据库中
  13. (1小时数据结构)数据结构c++描述(三)--- 线性表间接寻址
  14. 如何查看Steam的17位Id
  15. 在线LaTex编辑器
  16. 51单片机c语言宏定义是什么意思,51单片机的C语言宏定义应用.doc
  17. 计算机水平软件应用怎么填,个人简历计算机水平书写格式
  18. 门面设计模式(Facade Pattern)
  19. Run-Time Check Failure #3 - The variable 'p' is being used without being initialized.
  20. 蓝牙Bluetooth模块介绍

热门文章

  1. pycharm安装包时各种报错,且pip无法安装
  2. java 自定义注解获取_Java自定义注解
  3. hashmap 复制_复杂链表的复制
  4. strnicmp,strncmpi方法
  5. queue源码java_看看AbstractQueue源码Java9
  6. 端计算(3)-kotlin(1)
  7. rust(14)-if let,while let
  8. 【学术相关】Github大盘点!2021年最值得推荐的38篇AI论文
  9. 【Python】精选23个Pandas常用函数
  10. 【NLP】NLP从业人员必须知道的十大必备知识库(附资料下载)