का उपयोग कर प्री-लॉलीपॉप डिवाइस के साथ काम नहीं करता है। मैं सामग्री appcompatv7 का उपयोग करके टूलबार और मेनू ड्रॉवर के लिए एक साधारण कोड कर रहा हूं। सब कुछ लॉलीपॉप के साथ नेक्सस 5 पर पूरी तरह से काम करता है, लेकिन प्री-लॉलीपॉप (4.1 या 4.4) डिवाइस क्रैश में। समस्या शैली को परिभाषित करने में समस्या आती है। मैंने अपना कोड डाला अगर कोई मुझे बता सके कि गलती कहां है।टूलबार एपकोपेट v7
यह मेरा मुख्य गतिविधि है:
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class Hello extends ActionBarActivity {
private ActionBarDrawerToggle toggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(
this,
drawerLayout,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close);
toggle.setDrawerIndicatorEnabled(true);
drawerLayout.setDrawerListener(toggle);
ListView lv_navigation_drawer = (ListView) findViewById(R.id.lv_navigation_drawer);
lv_navigation_drawer.setAdapter(new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
new String[] {"Screen 1", "Screen 2", "Screen 3"}));
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (toggle.onOptionsItemSelected(item))
return true;
return super.onOptionsItemSelected(item);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
toggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
toggle.onConfigurationChanged(newConfig);
}
}
मुख्य लेआउट: बस Theme.AppCompat.Light.NoActionBar बढ़ा कर
<LinearLayout 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:orientation="vertical" >
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
theme="@style/ThemeOverlay.AppCompat.ActionBar"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize" />
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ListView
android:id="@+id/lv_navigation_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@android:color/white" />
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
शैली (मैं है कोई शैली मान-V21 के लिए परिभाषित)
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>
</resources>
यह सब डिवाइस लॉलीपॉप और प्री-लो पर सही ढंग से काम करता है llipop। समस्या है जब उपकरण पट्टी और स्थिति पट्टी
मैं मूल्यों में यह परिवर्तन करने के रंग/शैलियों
<resources>
<style name="AppTheme" parent="Base.Theme.AppCompat"/>
<style name="AppTheme.Base" parent="Theme.AppCompat">
<item name="colorPrimary">#2ecc71</item>
<item name="colorPrimaryDark">#27ae60</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">@android:color/white</item>
</style>
<color name="primary">#457C50</color>
<color name="primaryDarker">#580C0C</color>
</resources>
अनुकूलित करने के लिए चाहता हूँ और मैं मान-V21
लिए शैली को जोड़ने की बात आती है<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="AppTheme.Base">
<item name="android:windowContentTransitions">true</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
<item name="android:windowSharedElementExitTransition">@android:transition/move</item>
</style>
</resources>
जैसा कि पहले कहा गया था, यह नेक्सस 5 पर ठीक काम करता है लेकिन हालांकि यूआई सही रंगों के साथ आता है, मैं सूची दृश्य को मेनू ड्रॉवर (I समझ में नहीं आता क्यों .. .. । लेकिन "प्री-लॉलीपॉप" डिवाइस दुर्घटनाग्रस्त हो जाता है।
... java.lang.IllegalStateException: त्रुटि मुझे फेंकता यह है इस गतिविधि पहले से ही एक कार्रवाई बार खिड़की सजावट के द्वारा आपूर्ति की है। विंडो.FEATURE_ACTION_BAR का अनुरोध न करें और इसके बजाय टूलबार का उपयोग करने के लिए अपने थीम में विंडो एक्शनबार को गलत पर सेट करें।
मैं इस त्रुटि के बारे में जानकारी का एक बहुत खोज की है और कोशिश की कई विकल्प: आइटम windowActionBar शैली के भीतर है "गलत" मुख्य गतिविधि में "टूलबार" को "android.support.v7.widget.Toolbar बन गए हैं टूलबार "लेकिन सफलता के बिना ... मैंने पहले से दिए गए उदाहरणों की भी खोज की है, लेकिन मेरे लिए काम नहीं कर रहे हैं मैं ग्रहण का उपयोग कर रहा हूं, मैनिफ़ेस्ट 21 का लक्ष्य और न्यूनतम 16 है, मैंने एसडीके और एडीटी भी अपडेट किया है ..
क्या कोई डिवाइस प्री-लॉलीपॉप पर सही तरीके से काम करने में मदद कर सकता है?
उत्तर आपके लिए काम करता है? – Sauron