2014-03-31 8 views
11

Ich habe kürzlich aktualisiert meine Eclipse und ADT-Plugin auf die neueste Version und erkannte einige große Veränderungen. Immer wenn ich ein neues Android-Anwendungsprojekt erstelle, erscheint eine neue appcompat_v7-Bibliothek, die vorher nicht vorhanden war, und auch eine fragment_main.xml. Warum das? Warum wird die activity_main.xml-Datei nicht mehr direkt für das Aktivitätslayout bevorzugt und warum ist die appcompat-Bibliothek jetzt in jedem Projekt enthalten? Ich habe versucht, Eclipse/ADT/SDK viele Male zu entfernen und entfernen Sie die Support-Bibliothek von SDK-Manager, aber kein Ergebnis! Mir ist klar, dass es etwas mit Actionbar zu tun hat, aber das Problem ist, dass jedes Mal, wenn ich ein neues Projekt erstelle, ein rotes Ausrufezeichen in der Datei des Projekts und in der appcompat_v7 Datei erscheint und dies verhindert, dass ich die App kompiliere/laufe. t schaffen und das einzige, was ich erhalte, ist beschädigt Code hier ein Bild: http://i.stack.imgur.com/XJMfW.pngSo entfernen Sie Support-Bibliothek (appcompat_v7) [Eclipse]

so wie kann ich diese Abhängigkeit entfernen und dank

+0

Hinweis: Wenn ich den beschädigten Code ", der im Bild angezeigt wird" entfernen, erhalte ich einen Fehler: R kann nicht in eine Variable aufgelöst werden, und das Importieren von R erzeugt mehr Fehler. – AlphaCode

+0

Klicken Sie mit der rechten Maustaste und wählen Sie Löschen. Ich habe den gleichen Ärger bemerkt, und Sie können die unnötigen Dateien (fragment.xml/.java) löschen und die Manifest-Ziele entsprechend bearbeiten. Stellen Sie dann sicher, dass Sie ein "Skelett" erstellen, das Sie einfach per Drag & Drop in zukünftige neue Projekte ziehen können, die Ihren Anforderungen entsprechen. – SQLiteNoob

+0

es sieht nicht einmal aus wie Sie die Bibliothek importiert – tyczj

Antwort

45

Warum ist das so?

Da die Google-Entwickler diese Vorlagen zu den Vorlagen für neue Aktivitäten hinzugefügt haben, zumindest für die "BlankActivity".

Warum ist die activity_main.xml Datei nicht für die Aktivität Layout bevorzugt mehr direkt

Sie sind sicherlich begrüßen activity_main.xml zu verwenden, was auch immer Sie wollen. Die aktuellen Vorlagen von Google möchten, dass Sie Fragmente verwenden. Google-Vorlagen sind nur Vorlagen. Man kann argumentieren - und ich habe vehement -, dass eine "BlankActivity" -Schablone nicht tun sollte, was sie tut. Darüber hinaus ist es nur eine Vorlage.

Warum ist die appcompat-Bibliothek jetzt in jedem Projekt enthalten?

Vermutlich wollten sie Sie mit einer konsistenten Aktionsleiste starten, selbst auf älteren API-Ebenen.

Ich weiß, es hat etwas mit ActionBar zu tun hat, aber das Problem ist, dass, wenn ich ein neues Projekt ein rotes Ausrufezeichen auf beiden Projektdatei und appcompat_v7 Datei zeigt sich erstellen und dies hindert mich daran, Kompilieren/Ausführen der Anwendung oder sogar manchmal ist appcompat_v7 Datei nicht erstellen und das einzige, was ich ist Code

I this issue vor einer Woche oder so berichtet bekommen beschädigt.

so wie kann ich diese Abhängigkeit

Schritt # 1 entfernen: Mit Rechtsklick auf den Projektnamen im Paket-Explorer, und wählen Sie Eigenschaften. Klicken Sie auf Android in der Liste der Objektkategorien auf der linken Seite, und scrollen Sie nach unten auf der rechten Seite nach unten:

Eclipse Project Properties, Android Category

Schritt # 2: In der Liste der angeschlossenen Bibliothek Projekte, die Sie jetzt in die sehen Im Dialogfeld "Eigenschaften" sehen Sie möglicherweise einen Eintrag, der dem "appcompat_v7_6" ähnelt, den Sie im obigen Screenshot sehen. Ihre letzte Ziffer wird anders sein, und möglicherweise hat Ihre rote Ziffer ein X anstelle eines grünen Häkchens.Unabhängig davon, ob in der Liste ein Eintrag für "appcompat_v7_NNN" vorhanden ist, klicken Sie darauf und dann auf die Schaltfläche Entfernen rechts neben der Liste. Klicken Sie dann auf die Schaltfläche OK, um den Dialog zu schließen.

Schritt # 3: In res/values/styles.xml, ändern Sie die Eltern von AppBaseTheme von Theme.AppCompat.Light zu @android:style/Theme.Light. In res/values-v11/styles.xml, ändern Sie die Eltern von AppBaseTheme von Theme.AppCompat.Light zu @android:style/Theme.Holo.Light. In rest/values-v14/styles.xml ändern Sie das übergeordnete Element von AppBaseTheme von Theme.AppCompat.Light.DarkActionBar zu @android:style/Theme.Holo.Light.DarkActionBar. Beachten Sie, dass bei diesen Werten davon ausgegangen wird, dass Sie beim Erstellen des Projekts das standardmäßige "Light-Design mit dunkler Aktionsleiste" ausgewählt haben. Sie müssen diese Anweisungen für weitere Schritte leicht anpassen.

Schritt # 4: In res/menu/main/xml, xmlns:app="http://schemas.android.com/apk/res-auto" von dem Wurzel <menu> Elemente und das app:showAsAction="never" Attribute aus dem <item> Elemente entfernen.

Schritt # 5: In Ihrer Tätigkeit (zB MainActivity), die Klasse der Aktivität Eltern ändern auf etwas anderes als ActionBarActivity - FragmentActivity eine gute Wahl wäre, die Anzahl weiterer Änderungen zu minimieren Sie machen müssen sofort. Bereinigen Sie auch Ihre Importe (z. B. Ctrl-Shift-O).

An dieser Stelle, abgesehen von möglicherweise Reinigung Ihres Projekts (Projekt> Reinigen aus dem Hauptmenü), sollte die appcompat Zeug aus einem Projekt mit der "BlankActivity" Vorlage und mit einem "Navigationstyp" von " Keiner". Andere Vorlagen oder Navigationsoptionen für die Vorlage "BlankActivity" erfordern wahrscheinlich mehr Arbeit.

+0

Hallo Herr, Vielen Dank für Ihre Zeit. Wie ich sehen kann, benötigt diese Lösung viel Zeit, weil ich eine Menge Projekte erstelle. Ich habe meinen PC bereits formatiert und eclipse/sdk wieder installiert und jetzt funktioniert die appcompat, aber der einzige Nachteil, dass ich keine Elemente in der GUI frei "Die Position" per Drag & Drop platzieren kann, können Sie sich also eine Lösung vorstellen? Ich werde auf jeden Fall eine neue Frage für dieses Problem erstellen, aber das ist besser als nichts. – AlphaCode

+7

Ich hätte das 5 Mal verbessert, wenn ich könnte. – VtoCorleone

+4

Ich hätte das auch 5-mal aufgefrischt. Ich habe Stunden damit verbracht, eine Lösung zu finden. Das Mindeste, was sie hätten tun können, war, eine Option hinzuzufügen, um appcompat auszuschließen, mit einer sehr dicken Warnung. – user919426

7

Die besten Möglichkeiten, diese zu lösen:

  1. Zum einen in Projekt Right click->properties->Android .Es Sie können die in Reference platziert red marked appcompat sehen. Klicken Sie darauf und Entfernen Sie es.

  2. löschen fragment_main.xml und AppCompat Datei in Ihrem Eclipse- erstellt.

  3. bearbeiten und Ihre activity_main.xml wie diese ändern:

    <?xml version="1.0" encoding="utf-8"?> 
    
    <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"> 
    
        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="@string/hello_world" /> 
    
    </RelativeLayout> 
    
  4. In res/Werte/styles.xml:

    <resources> 
    
        <style name="AppBaseTheme" parent="android:Theme.Light"> 
    
        </style> 
    
        <!-- Application theme. --> 
        <style name="AppTheme" parent="AppBaseTheme"> 
    
        </style> 
    
    </resources> 
    
  5. In res/Werte- v11/styles.xml müssen Sie wie folgt ändern:

    <resources> 
    
        <style name="AppBaseTheme" parent="android:Theme.Holo.Light"> 
        </style> 
    
    </resources> 
    
  6. In Res/Werte-v14/Stile.xml müssen Sie wie diese ändern:

    <resources> 
    
        <style name="AppBaseTheme" parent="android:Theme.Light"> 
        </style> 
    
        <style name="AppTheme" parent="AppBaseTheme"> 
        </style> 
    
    </resources> 
    
  7. ändern Menü/main.xml wie diese:

    <menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    
        <item 
         android:id="@+id/action_settings" 
         android:orderInCategory="100" 
         android:showAsAction="never" 
         android:title="@string/action_settings"/> 
    
    </menu> 
    
  8. Schließlich Ihr MainActivity.java wie diese ändern:

    import android.app.Activity; 
    import android.os.Bundle; 
    
    
    public class MainActivity extends Activity { 
    
    
        @Override 
        protected void onCreate(Bundle savedInstanceState) { 
         super.onCreate(savedInstanceState); 
         setContentView(R.layout.activity_main); 
    
    } 
    
    } 
    

Sie müssen es tun, um ein neues Projekt zu erstellen