2015-05-01 11 views
58

Ich installierte (Android Studio 1.2 + SDK-Pack) zum ersten Mal, ich erstellte ein Testprojekt mit Demo-Registerkarte Aktivität. Ich habe keine einzige Zeile Code geschrieben, alles wurde von Android Studio generiertandroid.support.v7.internal.widget.ActionBarOverlayLayout konnte nicht instanziiert werden

In fragment_main.xml tritt das folgende Problem auf.

enter image description here

java.lang.ClassNotFoundException: android.support.v4.view.ViewPropertyAnimatorListener 
    at org.jetbrains.android.uipreview.ModuleClassLoader.load(ModuleClassLoader.java:127) 
    at com.android.tools.idea.rendering.RenderClassLoader.findClass(RenderClassLoader.java:53) 
    at org.jetbrains.android.uipreview.ModuleClassLoader.findClass(ModuleClassLoader.java:84) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2585) 
    at java.lang.Class.getConstructor0(Class.java:2885) 
    at java.lang.Class.getConstructor(Class.java:1723) 
    at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:348) 
    at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:105) 
    at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:177) 
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:214) 
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:142) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:482) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
    at com.android.layoutlib.bridge.bars.BridgeActionBar.<init>(BridgeActionBar.java:84) 
    at com.android.layoutlib.bridge.bars.AppCompatActionBar.<init>(AppCompatActionBar.java:56) 
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.createActionBar(RenderSessionImpl.java:1691) 
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:362) 
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:321) 
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350) 
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:497) 
    at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:485) 
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:894) 
    at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:485) 
    at com.android.tools.idea.rendering.RenderTask.render(RenderTask.java:590) 
    at com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel$6.run(AndroidDesignerEditorPanel.java:480) 
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320) 
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310) 
    at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254) 
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269) 
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227) 
    at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217) 
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) 
    at com.intellij.util.Alarm$Request$1.run(Alarm.java:351) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 

xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity$PlaceholderFragment"> 

    <TextView android:id="@+id/section_label" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</RelativeLayout> 

Aktivität (keine Codefehler hier, aber ich bin überrascht, Anrufe von veralteten Funktionen in einem Demo-Code zu sehen):

import java.util.Locale; 

import android.support.v7.app.ActionBarActivity; 
import android.support.v7.app.ActionBar; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.os.Bundle; 
import android.support.v4.view.ViewPager; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 


public class MainActivity extends ActionBarActivity implements ActionBar.TabListener { 

    /** 
    * The {@link android.support.v4.view.PagerAdapter} that will provide 
    * fragments for each of the sections. We use a 
    * {@link FragmentPagerAdapter} derivative, which will keep every 
    * loaded fragment in memory. If this becomes too memory intensive, it 
    * may be best to switch to a 
    * {@link android.support.v4.app.FragmentStatePagerAdapter}. 
    */ 
    SectionsPagerAdapter mSectionsPagerAdapter; 

    /** 
    * The {@link ViewPager} that will host the section contents. 
    */ 
    ViewPager mViewPager; 

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

     // Set up the action bar. 
     final ActionBar actionBar = getSupportActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     // Create the adapter that will return a fragment for each of the three 
     // primary sections of the activity. 
     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

     // Set up the ViewPager with the sections adapter. 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 

     // When swiping between different sections, select the corresponding 
     // tab. We can also use ActionBar.Tab#select() to do this if we have 
     // a reference to the Tab. 
     mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
      @Override 
      public void onPageSelected(int position) { 
       actionBar.setSelectedNavigationItem(position); 
      } 
     }); 

     // For each of the sections in the app, add a tab to the action bar. 
     for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { 
      // Create a tab with text corresponding to the page title defined by 
      // the adapter. Also specify this Activity object, which implements 
      // the TabListener interface, as the callback (listener) for when 
      // this tab is selected. 
      actionBar.addTab(
        actionBar.newTab() 
          .setText(mSectionsPagerAdapter.getPageTitle(i)) 
          .setTabListener(this)); 
     } 
    } 


    @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); 
    } 

    @Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
     // When the given tab is selected, switch to the corresponding page in 
     // the ViewPager. 
     mViewPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
    } 

    /** 
    * A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
    * one of the sections/tabs/pages. 
    */ 
    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

     public SectionsPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      // getItem is called to instantiate the fragment for the given page. 
      // Return a PlaceholderFragment (defined as a static inner class below). 
      return PlaceholderFragment.newInstance(position + 1); 
     } 

     @Override 
     public int getCount() { 
      // Show 3 total pages. 
      return 3; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      Locale l = Locale.getDefault(); 
      switch (position) { 
       case 0: 
        return getString(R.string.title_section1).toUpperCase(l); 
       case 1: 
        return getString(R.string.title_section2).toUpperCase(l); 
       case 2: 
        return getString(R.string.title_section3).toUpperCase(l); 
      } 
      return null; 
     } 
    } 

    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class PlaceholderFragment extends Fragment { 
     /** 
     * The fragment argument representing the section number for this 
     * fragment. 
     */ 
     private static final String ARG_SECTION_NUMBER = "section_number"; 

     /** 
     * Returns a new instance of this fragment for the given section 
     * number. 
     */ 
     public static PlaceholderFragment newInstance(int sectionNumber) { 
      PlaceholderFragment fragment = new PlaceholderFragment(); 
      Bundle args = new Bundle(); 
      args.putInt(ARG_SECTION_NUMBER, sectionNumber); 
      fragment.setArguments(args); 
      return fragment; 
     } 

     public PlaceholderFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
      return rootView; 
     } 
    } 

} 
+0

Wenn Sie SDK installiert haben, wurde es möglicherweise nicht richtig geladen. Versuchen Sie, Ihr Studio neu zu starten. – Apurva

+0

Ich neu starten und immer noch den gleichen Fehler – user3782779

Antwort

196

genau das gleiche Problem hatte. Ich habe res/values/styles.xml es los zu

<!-- Base application theme. --> 
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
</style> 

+18

Vielen Dank! Ich habe "Theme.AppCompat.Light.DarkActionBar" in "Base.Theme.AppCompat.Light.DarkActionBar" geändert. Also "Basis" fehlte ... – Blankarsch

+6

Irgendeine Idee warum solch ein einfacher und offensichtlicher Fehler in Android Studio 1.2 auftritt? Wörtlich nur installiert ein JDK und Android Studio 1.2, "Neues Projekt" und machte eine leere Aktivität leer und es zeigt mir ClassNotFoundException von OP für ViewPropertyAnimatorListener. Eine einfache Möglichkeit, die Standardeinstellungen zu bearbeiten, so dass sie das nicht tun? –

+1

Danke funktioniert wie ein Charme – Naveed

7

Ich hatte das gleiche Problem, ich denke, es ist ein Problem beim Rendern von AppCompatTheme.

Vorschau zu ermöglichen, wieder wechseln Sie zu einem Topos wie „Material Light“/„Material.Light.DarkActionBarTheme“

0

Wechseln ich von einem völlig neuen Projekt diesen Fehler hatte, erstellt von Android Studio 1.2.

@ Florents Lösung für mich gearbeitet:

Wechsel zu einem Topos wie "Material Light"/"Material.Light.DarkActionBarTheme"

Das änderte sich, das Projekt gebaut, und die Render begann zu arbeiten.

17

Die Android Tools Projekt-Website listet dies als einen bekannten Fehler der Version 1.2 des Android Gradle Plugin, und erklären es von Version 1.2.3

See behoben werden: http://tools.android.com/knownissues

Sie schlagen 3 Abhilfen:

Quote der obige Link:

Behelfslösung 1: Zuerst das Projekt manuell bauen, dann synchronisieren manuell t Er Projekt (mit dem Sync mit Gradle-Dateien in der Symbolleiste oder aus dem Tools> Android-Menü), dann drücken Sie schließlich Refresh in der Symbolleiste über Layout-Editor.

Problemumgehung 2: Schalten Sie jetzt das Android Gradle-Plugin von 1.2.x auf 1.1.3 für um. Wenn 1.2.3 veröffentlicht wird, können Sie zurück zu den Versionen 1.2.x wechseln.

Abhilfe 3: Wenn die oben genannten Abhilfen für Sie nicht funktionieren, und Sie sind auf Fenster, bitte versuchen Sie einen Build von [link in Website]

+3

Bessere Antwort als die angenommene imo, +1 –

2

Ich hatte den gleichen Fehler herunterzuladen. Die Lösung war:

  • Zuerst müssen Sie Ihr Projekt synchronisieren.
  • Als nächstes gehen Sie auf Build-Menü, und klicken Sie auf das Projekt zu reinigen.
  • Schließlich gehen Sie wieder zum Menü Erstellen und klicken Sie auf die Option Neu erstellen.

Keine Notwendigkeit, etwas zu ändern, und funktioniert wie ein Charme.

+0

danke, arbeitete für mich :) –

1

Ich habe <style name="AppTheme" parent="android:Theme.Light"> in meiner styles.xml verwendet und es hat funktioniert.

0

Ich löste es durch Ändern der Werte unter: Relative Layout -> Eigenschaften -> Padding | zu numerischen Werten anstelle von Standardwert. Dann drücken Sie Rebuild.

+1

Können Sie noch mehr Erklärung hinzufügen, was Sie gerade getan haben? –

-1

Ich war mit dem gleichen Problem konfrontiert. Es ist ein Rendering-Problem mit den AppCompat-Designs. Also machte ich Änderungen an der styles.xml Datei wie folgt:

<style name="AppTheme" parent ="android:Theme.Holo.Light.DarkActionBar"> 
</style> 

so das Problem resolved.However wenn wir noch die AppCompat Themen verwenden wollen, was getan werden sollte, habe ich noch nicht herausgefunden.

+2

Hallo SabU, willkommen zu stackoverflow. Es sieht so aus, als hätten Sie Probleme mit der Formatierung des Posts, da Ihnen wichtige Informationen in Ihrem Post fehlen. Sie können den grafischen Editor verwenden, um Code zu markieren (wählen Sie den Code aus und verwenden Sie die Schaltfläche {} oben oder verwenden Sie das Markup hier: http: //stackoverflow.com/help/formatting – TygerKrash

0

Für mich war das Update die neueste gradle Version

0

durch Änderung res/values/styles.xml zu

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 

tun DarkActionBarTheme oder NoActionBar

0

Android Studio 3.0

On zu verwenden die rechte obere Seite, du kannst siehe AppTheme. Klicken Sie darauf, wählen Sie aus dem Dropdown-Menü "Material Light" oder etwas anderes als Standard.

Verwandte Themen