我的应用程序不断崩溃(致命异常)
Posted
技术标签:
【中文标题】我的应用程序不断崩溃(致命异常)【英文标题】:My app keeps crashing (Fatal exception) 【发布时间】:2019-01-22 16:09:08 【问题描述】:我的应用程序以启动画面正常打开,但无法进入主屏幕并崩溃! 我正在尝试制作tablayout(代码中没有错误)
这是调试的错误:
E/androidRuntime: 致命异常: main 进程:com.foot.ws.worldcup,PID:10249 java.lang.RuntimeException:无法启动活动 ComponentInfocom.foot.ws.worldcup/com.foot.ws.worldcup.MainActivity:android.view.InflateException:二进制 XML 文件第 11 行:二进制 XML 文件第 11 行: 膨胀类 android.support.design.widget.AppBarLayout 时出错 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2904) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2979) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1643) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:180) 在 android.app.ActivityThread.main(ActivityThread.java:6944) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:835) 原因:android.view.InflateException:二进制 XML 文件第 11 行:二进制 XML 文件第 11 行:错误膨胀类 android.support.design.widget.AppBarLayout 原因:android.view.InflateException: Binary XML file line #11: Error inflating class android.support.design.widget.AppBarLayout 引起:java.lang.reflect.InvocationTargetException 在 java.lang.reflect.Constructor.newInstance0(本机方法) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:334) 在 android.view.LayoutInflater.createView(LayoutInflater.java:647) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:422) 在 android.app.Activity.setContentView(Activity.java:2665) 在 com.foot.ws.worldcup.MainActivity.onCreate(MainActivity.java:19) 在 android.app.Activity.performCreate(Activity.java:6986) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1232) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2857) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2979) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1643) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:180) 在 android.app.ActivityThread.main(ActivityThread.java:6944) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:835) 引起:java.lang.IllegalArgumentException:您需要将 Theme.AppCompat 主题(或后代)与设计库一起使用。 在 android.support.design.widget.ThemeUtils.checkAppCompatTheme(ThemeUtils.java:33) 在 android.support.design.widget.AppBarLayout.(AppBarLayout.java:158) 在 java.lang.reflect.Constructor.newInstance0(本机方法) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:334) 在 android.view.LayoutInflater.createView(LayoutInflater.java:647) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:422) 在 android.app.Activity.setContentView(Activity.java:2665) 在 com.foot.ws.worldcup.MainActivity.onCreate(MainActivity.java:19) 在 android.app.Activity.performCreate(Activity.java:6986) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1232) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2857) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2979) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1643) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:180) 在 android.app.ActivityThread.main(ActivityThread.java:6944) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:835)
这是主要的:(包括进口)
public class MainActivity extends FragmentActivity
private TabLayout tabLayout;
private AppBarLayout appBarLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabLayout = findViewById(R.id.tablayout_id);
appBarLayout = findViewById(R.id.appbarid);
viewPager = findViewById(R.id.viewpager_id);
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.AddFragment(new FragmentQuiz(),"Quiz");
adapter.AddFragment(new FragmentExplore(), "Explore");
adapter.AddFragment(new FragmentStore(), "Store");
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
xml:
<LinearLayout 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_
android:layout_
tools:context=".MainActivity"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_
android:layout_
android:layout_gravity="center"
app:elevation="0dp"
android:id="@+id/appbarid">
<ImageView
android:id="@+id/iv"
android:layout_
android:layout_
android:padding="10dp"
android:src="@drawable/image" />
</android.support.design.widget.AppBarLayout>
<android.support.design.widget.TabLayout
android:layout_
android:layout_
app:tabGravity="fill"
app:tabMode="fixed"
android:id="@+id/tablayout_id"
app:tabTextColor="@color/tabtextcolor"
app:tabIndicatorColor="@color/tabindicatorcolor"
android:background="@color/tab"/>
<android.support.v4.view.ViewPager
android:layout_
android:layout_
android:id="@+id/viewpager_id"
>
</android.support.v4.view.ViewPager>
【问题讨论】:
您是从 MainActivity 的支持库中导入 appbarLayout 吗? 【参考方案1】:您需要在 AndroidManifest.xml 中为您的应用程序定义主题,例如:
<application
.....
android:theme="@style/Theme">
并在 values/styles.xml 文件中定义了这种样式,例如:
<style name="Theme" parent="Theme.AppCompat.Light">
.....
</style>
【讨论】:
以上是关于我的应用程序不断崩溃(致命异常)的主要内容,如果未能解决你的问题,请参考以下文章
致命异常:UIApplicationInvalidInterfaceOrientation
如何使用 Firebase (Crashlytics) 记录非致命(捕获)异常