点击按钮启动新创建的Activity致应用崩溃,请求排查原因
问题排查:启动新Activity时应用崩溃
点击按钮启动secondscreen Activity时应用崩溃,同一应用内其他Activity可正常启动,仅该新创建的Activity无法启动。
相关代码
secondscreen.java
package org......android.activities; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import org......android.R; public class secondscreen extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_secondscreen); TextView myAwesomeTextView = (TextView)findViewById(R.id.myAwesomeTextView); myAwesomeTextView.setText("brown fox"); } }
activity_secondscreen.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activities.secondscreen"> <TextView android:id="@+id/myAwesomeTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="secondscreen activity" android:textSize="34sp" android:layout_centerVertical="true" android:layout_centerHorizontal="true"/> </RelativeLayout>
启动代码(首个Activity中)
buttonTraining = findViewById(R.id.buttonTraining); buttonTraining.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Toast.makeText(getApplicationContext(),"going to second activity...",Toast.LENGTH_SHORT).show(); Intent intent = new Intent(getApplicationContext(),secondscreen.class); startActivity(intent); } });
错误栈追踪
Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
问题原因
secondscreen继承了AppCompatActivity,而AppCompatActivity要求必须使用Theme.AppCompat系列主题(或其子主题),但当前该Activity未配置符合要求的主题,导致崩溃。
解决方法
方法1:单独为该Activity指定AppCompat主题
打开AndroidManifest.xml,找到secondscreen对应的<activity>标签,添加android:theme属性:
<activity android:name=".activities.secondscreen" android:theme="@style/Theme.AppCompat.Light.DarkActionBar" />
方法2:为整个应用设置全局AppCompat主题(推荐)
若应用内多数Activity都继承自AppCompatActivity,可在AndroidManifest.xml的<application>标签中设置全局主题:
<application ... android:theme="@style/Theme.AppCompat.Light.DarkActionBar">
此设置会让所有Activity默认使用该主题,无需单独配置。
内容的提问来源于stack exchange,提问作者Asif Hussain
相关产品推荐
相关产品推荐

