新建了一个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">    <application        android: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()函数如下:

    @Override    protected 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(){            @Override            public void onClick(View view) {                Intent intent=new Intent(MainActivity.this ,NormalActivity.class);                startActivity(intent);            }        });        startDialogActivity.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Intent intent=new Intent(MainActivity.this,DialogActivity.class);                startActivity(intent);            }        });    }

DialogActivity 定义如下:

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

程序主界面如下:

Android studio设置activity主题程序崩溃解决办法_第1张图片

当单击 '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来解决程序崩溃的问题。

更多相关文章

  1. Android 应用程序获得版本号
  2. Android程序的退出活动
  3. 享受 Android 应用程序的 Java 技术盛宴
  4. Android 应用程序签名
  5. 创建android画笔程序的样例(有镜面效果)

随机推荐

  1. taintDroid系统性能测试之——Android(安
  2. android之获取信息终端
  3. Android(安卓)退出程序方式——再按一次
  4. Android(安卓)欢迎界面淡出动画效果(Anim
  5. Android简单例子(拨号服务调用)
  6. TelephonyManager
  7. Android自定义view三验证码输入控件
  8. android 输入法界面显示的开关
  9. cocos2d-x-2.1.4在NDK r9下的编译问题
  10. 【Android开发小记--9】触摸事件---实现