2015-10-26 17 views
6

Sono nuovo per Appdevelopment e cerco di modificare il tema della mia app in Android Studio 1.4.1 (più recente) su Windows 10 x64, ma ottengo sempre eccezioni, ecco cosa faccio: (sì, ora ci sono già molte domande, ma non sono riuscito a trovare una risposta)Problemi di rendering durante la modifica del tema

  1. Avviare Project (nome: TEST)
  2. Per Phone e Tablet (min SDK:. API 15 Android 4.0. 3 IceCreamSandwich)
  3. Scegli attività vuota (nome: MainActivity)
  4. Vai a activity_main.xml -> vista progettazione
  5. Scegliere Nexus 4; API 23; Holo Light/Holo Dark/Material Light/Material Dark; (API e telefono non importa => provato un sacco)
  6. ECCEZIONE:

problemi di rendering

Le seguenti classi non possono essere istanziati:

  • Android .support.design.widget.CoordinatorLayout
  • android.support.design.widget.AppBarLayout

Suggerimento: [...]

Dettagli eccezione

java.lang.IllegalArgumentException: È necessario utilizzare un tema Theme.AppCompat (o discendente) con la libreria di design . su android.support.design.widget.ThemeUtils.checkAppCompatTheme (ThemeUtils.java:34) su android.support.design.widget.CoordinatorLayout. (CoordinatorLayout.java:178) su android.support.design.widget.CoordinatorLayout . (CoordinatorLayout.java:172) a sun.reflect.NativeConstructorAccessorImpl.newInstance0 (metodo natale) a sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) a sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java : 45) all'indirizzo java.lang.reflect.Constructor.newInstance (Constructor.java:422) all'indirizzo org.jetbrains.android.uipreview.ViewLoader.createNewInstance (ViewLoader.java:458) presso org.jetbrains.android.uipreview .ViewLoader.loadClass (ViewLoader.java:170) in org.jetbrains.android.uipreview.ViewLoader.loadView (ViewLoader.java:103) in com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView (LayoutlibCallbackImpl.java : 190) su android.view.BridgeInflater.loadCustomView (BridgeInflater.java:218) su android.view.BridgeInflater.createViewFromTag (BridgeInflater.java:145) su android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:704) su android.view.LayoutInflater.inflate (LayoutInflater.java:492) su android.view.LayoutInflater.inflate (LayoutInflater.java:394) su com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate (RenderSessionImpl .java: 223) su com.android.layoutlib.bridge.Bridge.createSe ssion (Bridge.java:426) su com.android.ide.common.rendering.LayoutLibrary.createSession (LayoutLibrary.java:350) su com.android.tools.idea.rendering.RenderTask $ 2.compute (RenderTask.java:510) su com.android.tools.idea.rendering.RenderTask $ 2.compute (RenderTask. java: 498) in com.intellij.openapi.application.impl.ApplicationImpl.runReadAction (ApplicationImpl.java:888) in com.android.tools.idea.rendering.RenderTask.createRenderSession (RenderTask.java:498) in com.android.tools.idea.rendering.RenderTask.access $ 600 (RenderTask.java:72) su com.android.tools.idea.rendering.RenderTask $ 3.call (RenderTask.java:610) su com.android. tools.idea.rendering.RenderTask $ 3.call (RenderTask.java:607) su com.android.tools.idea.rendering.RenderService.runRenderAction (RenderService.java:366) su com .android.tools.idea.rendering.RenderTask.render (RenderTask.java:607) su com.android.tools.idea.rendering.RenderTask.render (RenderTask.java:629) su com.intellij.android.designer .designSurface.AndroidDesignerEditorPanel $ 6.run (AndroidDesignerEditorPanel.java:480) all'indirizzo com.intellij.util.ui.update.MergingUpdateQueue.execute (MergingUpdateQueue.java:320) all'indirizzo com.intellij.util.ui.update.MergingUpdateQueue. execute (MergingUpdateQueue.java:310) su com.intellij.util.ui.update.MergingUpdateQueue $ 2.run (MergingUpdateQueue.java:254) su com.intellij.util.ui.update.MergingUpdateQueue.flush (MergingUpdateQueue.java : 269) all'indirizzo com.intellij.util.ui.update.MergingUpdateQueue.flush (MergingUpdateQueue.java:227) all'indirizzo com.intellij.util.ui.update.MergingUpdateQu eue.run (MergingUpdateQueue.java:217) su com.intellij.util.concurrency.QueueProcessor.runSafely (QueueProcessor.java:238) su com.intellij.util.Alarm $ Richiesta $ 1.run (Alarm.java:351) all'indirizzo java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) in java.util.concurrent.FutureTask.run (FutureTask.java:266) in java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) a java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) a java.lang.Thread.run (Thread.java:745)

AndroidManifest.xml: (predefiniti)

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="de.minding.test" > 

    <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" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

MainActivity.java: (Premade)

package de.minding.test; 

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

activity_main.xml: (Premade)

<?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=".MainActivity"> 

    <android.support.design.widget.AppBarLayout android:layout_height="wrap_content" 
     android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar android:id="@+id/toolbar" 
      android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> 

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

    <include layout="@layout/content_main" /> 

    <android.support.design.widget.FloatingActionButton android:id="@+id/fab" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" 
     android:src="@android:drawable/ic_dialog_email" /> 

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

Cosa c'è di sbagliato ?? Io uso la roba premade e non funziona? -_- NON figo.

Si prega di aiuto!-Minding

+0

Ottenere lo stesso errore –

+0

Sì, ho cercato di Google e ci sono stati incredibili molti di questi problemi laceranti. Piuttosto triste. _-Minding_ – Minding

risposta

3

Prova a scegliere SDK minima più elevata per il progetto (Lollipop o Marshmallow)

Se davvero bisogno di minima più vecchio, provare a creare il progetto con un'attività vuoto o nessuna attività a tutti e cominciare da lì .

+0

Posso cambiare il tema quando utilizzo un'attività vuota senza ricevere errori, ma (come) posso usare un menu di overflow con questo? Se uso Lollipop sto programmando solo per meno del 10% di tutti gli utenti Android, giusto? Voglio avere un punteggio elevato (API 15: 94%). - _Minding_ – Minding

+1

Il lecca-lecca dall'1% di gennaio è ora con Marshmallow al 26%. Crescerà quindi è necessario considerare se questo vale la pena. – taurelas

+0

La creazione del progetto per Lollipop in realtà dovrebbe risolvere il problema di rendering per i progetti con SDK inferiori. – taurelas

0

provare a sostituire

android:theme="@style/AppTheme.AppBarOverlay" 

con

android:theme="@style/Theme.AppCompat.Light" 

all'interno CoordinatorLayout

Problemi correlati