gpt4 book ai didi

java.lang.IllegalArgumentException : You need to use a Theme. AppCompat 主题(或后代)与设计库

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:16 25 4
gpt4 key购买 nike

我正在尝试借助本教程从 Material Design 实现“带图像的灵活空间”:

Toolbar animation with android design support library

但我在布局预览中收到此渲染问题消息:

The following classes could not be instantiated:

- android.support.design.widget.CoordinatorLayout (Open Class, Show Exception, Clear Cache) - android.support.design.widget.AppBarLayout (Open Class, Show Exception, Clear Cache)

我将 Theme.AppCompat 主题应用于我的应用程序,但它搞砸了所有其他 Activity 中的操作栏和外观。它还会在操作栏方法上引发错误,例如:

actionBar.setDisplayHomeAsUpEnabled(true);

将错误(大致)描述为:

setDisplayHomeAsUpEnabled(boolean) is being called on a null object reference

另外,为整个应用程序使用 Theme.AppCompat 会在预览屏幕中出现以下错误:

The following classes could not be found: - android.support.v7.internal.app.WindowDecorActionBar (Fix Build Path, Create Class)

因此我不想对整个应用程序使用 Theme.AppCompat。但是,在我想使用“带图像的灵活空间”设计的特定 Activity 中使用 Theme.AppCompat 不会解析 CoordinatorLayoutAppBarLayout 前面提到的问题。

请告诉我该怎么做!我已经阅读了很多关于同一问题的 stackoverflow 帖子,但它们对我不起作用!我已经重新启动了 android studio 并使我的缓存无效并重新启动了无数次!!

这是我的 build.gradle

中的依赖项
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:23.0.1'
compile 'com.android.support:appcompat-v7:23.0.1'
compile project(':viewPagerIndicator')
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}

按原样在我的手机上运行该应用程序会出现此错误:

java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.

像这样将 windowActionBar 设置为 false :

<item name="windowActionBar">false</item>

然后运行该应用程序会抛出此错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.seven.actionbar/com.seven.actionbar.EventsDetailActivity}: java.lang.IllegalArgumentException: AppCompat does not support the current theme features: { windowActionBar: false, windowActionBarOverlay: false, android:windowIsFloating: false, windowActionModeOverlay: false, windowNoTitle: false }

这是 EventsDetailsActivity.java 文件中的工具栏位:

    Toolbar toolbar;
CollapsingToolbarLayout collapsingToolbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_eventsdetail);

actionBarColor =
new ColorDrawable(ContextCompat.getColor(getApplicationContext(), R.color.ufl_orange));

tDes = (TextView)findViewById(R.id.evt_desc);
tVenue = (TextView)findViewById(R.id.evt_venue);
tDate = (TextView)findViewById(R.id.evt_date);
tTime = (TextView)findViewById(R.id.evt_time);
tPdate = (TextView)findViewById(R.id.evt_post_date);
tPtime = (TextView)findViewById(R.id.evt_post_time);
tCont = (TextView)findViewById(R.id.evt_contact);
tOrg = (TextView)findViewById(R.id.evt_org);
tCount = (TextView)findViewById(R.id.evt_count);

//Intent intent = getIntent();
//joinMap = (HashMap)intent.getSerializableExtra("e_uMap");
myApp = (MyApp)getApplication();

//action bar magic
actionBarColor.setAlpha(0);

toolbar = (Toolbar) findViewById(R.id.anim_toolbar);
setSupportActionBar(toolbar);
collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar);
ImageView header = (ImageView) findViewById(R.id.header);

new LoadDetail().execute();

goingSwitch = (Switch) findViewById(R.id.btn_join);
goingSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()

{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
new JoinEvents().execute(String.valueOf(isChecked));
}
});
}



@Override
public void onStart(){
super.onStart();
// actionBar = this.getActionBar();
// actionBar.setDisplayShowHomeEnabled(false);
}

这是它附带的布局代码:

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.CoordinatorLayout
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"
android:fitsSystemWindows="true"
tools:context=".EventsDetailActivity">

<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="192dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginBottom="32dp"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">

<ImageView
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/monalisa"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax" />

<android.support.v7.widget.Toolbar
android:id="@+id/anim_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"/>'

</android.support.design.widget.CoordinatorLayout>

ScrollView 和关联的子元素(此处未显示)是页面的主要内容。

同时将主题修改为:

<style name="EventsTheme" parent="Theme.AppCompat.Light">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>

IllegalStateExceptionRuntimeException 消失时,我再也看不到 CoordinatorLayout

错误

最佳答案

你的 logcat 抛出什么

java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.

  1. 您的所有主题(需要操作栏/工具栏)都必须继承来自 Theme.AppCompat。有可用的变体,包括 Light和 NoActionBar。

请阅读关于 AppCompat 的官方文档

你应该做什么

  1. 请设置 parent="Theme.AppCompat.NoActionBar" 而不是parent="Theme.AppCompat.Light"

  2. 避免重复库调用 . support:appcompat 在您的 build.gradle 部分调用了两次。

你可以在 SO 上查看相似类型的问题

  1. Window.FEATURE_ACTION_BAR and set windowActionBar to false
  2. AppCompat does not support the current theme features

关于java.lang.IllegalArgumentException : You need to use a Theme. AppCompat 主题(或后代)与设计库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33741954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com