java.lang.IllegalArgumentException: Vous devez utiliser un Thème.AppCompat thème (ou descendant) avec la bibliothèque de conception
Je suis en train de mettre en œuvre la "flexibilité de l'Espace de l'Image" à partir de la Conception de Matériel avec l'aide de ce tuto:
Barre d'outils d'animation avec android d'aide à la conception de la bibliothèque
Mais je suis arriver ce problème de Rendu message dans la mise en page de prévisualisation :
Les classes suivantes ne peut pas être instancié:
-android.de soutien.de la conception.widget de.CoordinatorLayout (Classe Ouverte, Spectacle D'Exception, Vider Le Cache)
-android.de soutien.de la conception.widget de.AppBarLayout (Classe Ouverte, Spectacle D'Exception, Vider Le Cache)
J'ai appliqué la Theme.AppCompat
thème à ma demande, mais c'vis de la barre d'action et l'apparence de toute autre activité.
Aussi, il déclenche une erreur sur la barre d'action, des méthodes telles que :
actionBar.setDisplayHomeAsUpEnabled(true);
indiquant l'erreur(à peu près):
setDisplayHomeAsUpEnabled(booléenne) est appelée sur un objet nul de référence
En outre à l'aide de Theme.AppCompat
pour l'ensemble de l'application donne l'erreur suivante dans l'écran de prévisualisation :
Les classes suivantes ne pourraient pas être trouvés:
-android.de soutien.v7.interne.app.WindowDecorActionBar (Fix Build Path, Créer Une Classe)
Donc je ne veux pas utiliser Theme.AppCompat
pour l'ensemble de l'application. Cependant, à l'aide d'un Theme.AppCompat
pour l'activité spécifique où je veux utiliser le "Flexible de l'espace avec l'image" de la conception ne permet pas de résoudre le CoordinatorLayout
et AppBarLayout
question plus tôt.
Merci de me dire quoi faire! J'ai lu beaucoup de stackoverflow posts sur le même sujet, mais ils n'ont pas de travail pour moi! J'ai redémarré android studio et invalide le cache de mon navigateur et redémarré un nombre incalculable de fois!!
Voici les dépendances dans mon 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'
}
L'exécution de l'application sur mon téléphone me donne cette erreur:
java.lang.IllegalStateException: Cette Activité a déjà une action
bar fourni par la fenêtre de la décoration. Ne demandez pas
De la fenêtre.FEATURE_SUPPORT_ACTION_BAR et définir windowActionBar à false dans
votre thème d'utiliser une Barre d'outils au lieu.
Réglage de la windowActionBar à faux comme suit :
<item name="windowActionBar">false</item>
et puis l'exécution de l'application génère cette erreur :
java.lang.RuntimeException: Impossible de démarrer l'activité
ComponentInfo{com.sept.actionbar/com.sept.actionbar.EventsDetailActivity}:
java.lang.IllegalArgumentException: AppCompat ne prend pas en charge le
thème actuel caractéristiques: { windowActionBar: false,
windowActionBarOverlay: false, android:windowIsFloating: false,
windowActionModeOverlay: false, windowNoTitle: false }
Voici la barre d'outils du bit à partir de la EventsDetailsActivity.java fichier :
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);
}
Ici est la mise en page de code qui va avec:
<?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>
La ScrollView
et associés à des éléments enfants(non montré ici) est le contenu principal de la page.
Également modifié le thème:
<style name="EventsTheme" parent="Theme.AppCompat.Light">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
Tandis que le IllegalStateException
et RuntimeException
sont partis, je ne peux pas voir le CoordinatorLayout
de nouveau.
faux
Oui je l'ai fait. J'ai mis à jour ma question.
Essayez de changer la mise en page de prévisualisation à une diminution de l'Api sur Api-19
Modification de l'aperçu n'est pas vraiment la question. Quand je télécharge l'appli sur mon téléphone, je ne peux pas voir le
CoordinatorLayout
part à l'activité.Mise à jour de la question avec plus de détails sur l'exécution de l'application.
OriginalL'auteur Flame of udun | 2015-11-16
Vous devez vous connecter pour publier un commentaire.
Pourquoi avez-vous besoin d'utiliser
Toolbar
? Avez-vous besoin de l'appui de certaines anciennes versions d'Android?Le point est qu'une
Toolbar
n'est pas réellementActionBar
. Il manque un peu de fonctionnalités et vous oblige à utiliser des Thèmes précis sur vos Activités. Donc, si vous n'avez pas besoin de l'appui de certaines anciennes versions d'Android (v7.Barre d'outils est pour SDK 7 (Android 2.1).Oh, et en passant: ce que vous essayez de faire est appelée l'effondrement de la barre d'outils de mise en page. Suivez ce lien pour le tutoriel
http://antonioleiva.com/collapsing-toolbar-layout/
P. S. Ne pas compiler les différentes versions de la même bibliothèque! Ne pas faire ceci:
Au lieu, de le modifier pour cela:
Lors de la discussion sur stackoverflow.com/questions/29813474/..., il est conseillé d'utiliser la Barre d'outils au lieu de ActionBar
J'ai donné la réponse 1,5 ans, et j'ai reconsidéré ma position en tant que AppBarLayout est apparu. Je suis donc à l'aide de la Barre d'outils moi-même ces jours-ci. Cependant, un intestin demandé quoi faire si vous ne souhaitez pas définir AppCompat thème pour votre activité.
oui, Google a changé beaucoup de choses...c'est de l'eau sous le pont maintenant
OriginalL'auteur RexSplode
Ce qui est de votre logcat Jette
de Thème.AppCompat. Il y a des variantes disponibles, y compris la Lumière
et NoActionBar.
Veuillez Lire le Document Officiel sur AppCompat
Que devez-vous faire
Veuillez régler
parent="Theme.AppCompat.NoActionBar"
au lieu deparent="Thème.AppCompat.La lumière"
Éviter Double De La Bibliothèque Appel .
support:appcompat
appelé deux fois dans votrebuild.gradle
section .Vous pouvez vérifier le même type de question sur DONC
stackoverflow.com/questions/21331836/...
Oui je l'ai déjà mentionné les étapes de votre dans les commentaires. Et ils ne sont pas de travail pour moi.
OriginalL'auteur IntelliJ Amiya
OK! le fameux problème de Barre d'outils.
Que de ce qu'il semble, essayez de faire quelques modifications dans le code que vous avez posté.
1) Si vous voulez ActionBar dans d'autres activités, mais celui-ci, créer un nouveau style pour NoActionBar et d'ajouter que le style de cette Activité
Noe en vous
AndroidManifest.xml
, d'attribuer ce thème, de sorte que seuls lesEventsDetailsActivity
sera pas ont ActionBar mais reste.2) La
ScrollView
ne fonctionne pas bien avec leCoordinatorLayout
. Ainsi afin de parvenir à La flexibilité de l'Espace avec l'Image‘ essayerNestedScrollView
au lieu deScrollView
. Cela vous donnera le bon effet d'animation.3) Changer le
ActionBar
avec unToolbar
dans votreEventsDetailsActivity
.Espère que cela aide.
OriginalL'auteur Pavitra Kansara