निम्न वर्गों को तत्काल नहीं किया जा सकता है: - android.support.v7.widget.Toolbar


104

मैं एंड्रॉइड लॉलीपॉप (5.0) में इस्तेमाल किए गए नए मटीरियल डिज़ाइन के साथ एक ऐप बना रहा हूं।

मैं निम्नलिखित गाइड का उपयोग कर रहा हूं:

अपना टूलबार बनाने के बाद, मुझे यह त्रुटि मिलती है: "निम्नलिखित कक्षाएं त्वरित नहीं हो सकीं: - android.support.v7.widget.Toolbar"

ऐप फोन या एमुलेटर में अच्छा काम करता है, लेकिन एंड्रॉइड स्टूडियो का लेआउट डिजाइनर लेआउट को सही ढंग से नहीं दिखाता है।

यहाँ कुछ चित्र हैं:

My_awesome_toolbar.xml लेआउट पूर्वावलोकन में त्रुटि my_awesome_toolbar.xml में त्रुटि

Activity_my.xml लेआउट पूर्वावलोकन में त्रुटि activity_my.xml में त्रुटि

फ़ाइलों का xml कोड:

my_awesome_toolbar.xml:

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_awesome_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary" />

activity_my.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:id="@+id/root"
            tools:context="com.myapp.test.MyActivity"
            android:orientation="horizontal">

    <include
        android:id="@+id/toolbar"
        layout="@layout/my_awesome_toolbar"
        />
    <!-- Rest of layout -->
</RelativeLayout>

MyActivity.java:

package com.myapp.test;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;


public class MyActivity extends ActionBarActivity {

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

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.my, 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();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

शैलियों का xml कोड (मान / स्टाइल। xml):

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/blue</item>
        <item name="colorPrimaryDark">@color/dark_blue</item>
        <item name="actionOverflowButtonStyle">@style/AppTheme.OverflowButtonStyle</item>
    </style>

    <!-- Style Title -->
    <style name="Title">
        <item name="android:textColor">@color/white</item>
        <item name="android:textStyle">bold</item>
        <item name="android:textSize">16sp</item>
    </style>

    <style name="AppTheme.OverflowButtonStyle" parent="Widget.AppCompat.ActionButton.Overflow">
        <item name="android:src">@drawable/overflow_icon</item>
    </style>
</resources>

फिलहाल मैं एंड्रॉइड स्टूडियो बीटा 0.8.9 का उपयोग करता हूं


Android स्टूडियो को अपडेट करने का प्रयास करें। अंतिम संस्करण 0.8.14 है। इसमें Toolbarरेंडरिंग के लिए अपडेट हो सकते हैं ।
एंटन होलोविन

धन्यवाद, समाधान एंड्रॉइड स्टूडियो अपडेट था।
firespacexyz

मेरे पास एक समान मुद्दा था और इसका अनुसरण करके तय किया गया था: stackoverflow.com/a/33903057/1214729
विक्टर ऑगस्तो

जवाबों:


96

Android Studio (या IntelliJ IDEA) के लिए,

यदि आपकी परियोजना में सब कुछ ठीक दिखता है और आप अभी भी अपने सभी लेआउट में त्रुटि प्राप्त कर रहे हैं, तो 'अमान्य कैश और पुनरारंभ करें' का प्रयास करें।

प्रतीक्षा करें जब तक कि एंड्रॉइड स्टूडियो सभी कैश और इंडेक्स बनाने के लिए समाप्त न हो जाए।

कैशे और पुनरारंभ को कैसे अमान्य करें


धन्यवाद। इस जवाब ने मेरी मदद की।
हैश

यह वास्तव में मेरी मदद करता था.. अजीब है लेकिन हमें यह करना होगा लेकिन धन्यवाद @gbero
मेटासेनर्फ

2
यह आमतौर पर एंड्रॉइड स्टूडियो के अपडेट के बाद मेरे साथ हुआ। शायद कुछ आंतरिक
अनुक्रम

1
नोट: यह आपके 'स्थानीय इतिहास' को हटा देगा ताकि यह थोड़ा चरम हो जाए। एंड्रॉइड स्टूडियो 2.2.3 में यूआई पूर्वावलोकन लॉग डायलॉग बॉक्स में एक 'क्लियर कैश' लिंक है, इसे पहले आज़माएं, लेकिन न तो समाधान ने मेरे लिए काम किया।
फिशज्ड

1
मेरे लिए काम नहीं किया, मैंने 23 से 25.3.1 तक appCompat - v7 संस्करण को अपडेट किया। यह मेरे लिए काम करने में मदद की
एंट्रोइड

164

मैंने इस से रेस / मान / स्टाइल / xml फ़ाइल बदल दी है:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

इसके लिए:

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">

और इससे समस्या हल हो गई।


3
अन्य दो समाधान विफल होने के बाद, यह एक मेरे लिए काम करता है।
मैंने एक बार एक भालू को कुश्ती दी।

9
इस समाधान के लिए तर्क दें
ब्लैकहॉक

यह काम किया वाह! । मैं वास्तव में जानना चाहता हूं कि हालांकि किसी को समझाने की कृपा करें?
शून्य

2
के बारे में क्या NoActionBarमें Base। के लिए प्रतिस्थापन क्या है Theme.AppCompat.NoActionBar?
मारियो वेलास्को

1
इसने मेरे लिए काम किया, लेकिन अगर आप खुद ही उस कोड को देखते हैं जो इसे घोषित करता है, तो ऐसी टिप्पणियां हैं जो कहती हैं कि शायद आपको अपने ऐप में Base.Theme.Whatever का उल्लेख नहीं करना चाहिए। तो मैं कहूंगा कि यह अपेक्षित व्यवहार नहीं है।
जोजेन

35

मैंने वही किया जो @gbero ने कहा था, और मैंने एंड्रॉइड वर्जन नंबर को बदल दिया था जो स्टूडियो 22 से 17 तक उपयोग करता है और यह काम करता है।

मैं एंड्रॉइड वर् 22 के लिए निर्माण करने के लिए बैकवर्ड संगतता का उपयोग कर रहा हूं, लेकिन 17 को लक्षित करने के लिए (अगर सही ढंग से कहा जाए, तो मैं अभी भी इस ऐप को बाहर निकालने की कोशिश कर रहा हूं) ताकि पीछे की संगतता को ट्रिगर किया जाए, जो कि afaik है android.support.v7.* है। यह शायद उनके प्रतिपादन कोड के साथ एक बग है। सुनिश्चित नहीं है कि अगर ऊपर दिए गए सुझाव के अनुसार कैश को साफ़ करना आवश्यक है क्योंकि रेंडरिंग कैश को अमान्य करने के बाद काम नहीं करता है, तो मैंने रेंडर करने के लिए संस्करण बदलने के बाद काम करना शुरू कर दिया। अगर मैं वापस संस्करण 22 में बदलता हूं, तो रेंडरिंग टूट जाता है, अगर मैं 17 पर वापस जाता हूं, तो यह फिर से काम करता है।

मेरा फिक्स


मैं उसी समस्या का सामना कर रहा हूं, मैंने पहले ही सब कुछ कर लिया है, लेकिन मेरी समस्या अभी तक हल नहीं हुई है। मैं इसे कैसे सुलझाऊं?
अतियार तालुकदार

1
देर से जवाब के लिए क्षमा करें, मैं एपीआई संस्करण 17 को लक्षित कर रहा था, यदि आप लक्ष्य कर रहे हैं, तो 16 का कहना है, तो 16 पर स्विच करें, 17 अभी भी गलत संस्करण होगा। मुझे इस लानत IDE को काम करने में इतनी परेशानी हो रही थी, मैंने अभी कमांड लाइन का उपयोग करना शुरू किया। विजुअल स्टूडियो के साथ भी, वे दोनों इंजीनियर हैं और वे एक बोझ बन जाते हैं, एक उपकरण नहीं।
ओवरलोडेड_ऑपरेटर

एपीआई स्तर को बदलने और कुछ फाइलों को अपडेट करने के बाद मेरी समस्या हल हो गई है। एडवांस में धन्यवाद
आतिर तालुकदार

@Overloaded_Operator यदि आपका minSdkVersionसंस्करण 17 वर्ष का है, तो मैं सुझाव दूंगा कि एपीआई स्तर 17 के साथ एमुलेटर पर ऐप चलाएं या एपीआई स्तर 17 के साथ एक वास्तविक डिवाइस और पुष्टि करें कि क्या यूआई उम्मीद के मुताबिक दिखता है और एंड्रॉइड स्टूडियो में प्रस्तुत किया गया है या नहीं
जॉन


12

एक और गलती जिसका एक ही प्रभाव हो सकता है वह पूर्वावलोकन में गलत विषय हो सकता है। किसी कारण से मैंने यहाँ कुछ अन्य विषय का चयन किया था। मेरे AppTheme को चुनने के बाद इसने फिर से काम किया:

लेआउट विकल्प


इसने मेरे लिए काम किया। लेकिन हम कैसे जानते हैं कि किस विषय का चयन करना है। मैं एंड्रॉइड के लिए शुरुआत कर रहा हूं
मेनुका ईशान

1
आपको उसी थीम को चुनना चाहिए जिसे आपने लेआउट फ़ाइल का उपयोग करने वाली गतिविधि के लिए निर्दिष्ट किया था। यह अक्सर AndroidManifest.xml में सेट होता है और इसे res / मान / स्टाइल / xml या res / मान / थीम.xml में परिभाषित किया जाता है
Björn Kechel

धन्यवाद :) मेरे परीक्षण ऐप में कोई थीम्स। Xml नहीं है, लेकिन थीम AndroidManifest.xml में थी। लेकिन मैं यह सोचने में मदद नहीं कर सकता कि वे नरक को बदलने का विकल्प क्यों देते हैं, अगर इसकी त्रुटि देने जा रहे हैं? यदि इसे xml में संपादित किया जाना चाहिए, तो केवल इसे सही तरीके से क्यों दिखाया जा रहा है, जैसे टेक्स्ट, लेकिन थीम बदलने का विकल्प नहीं? एक शुरुआत भ्रामक होगी
मेनुका इशान

1
आपको शायद डेवलपर डॉक्स को थोड़ा पढ़ना चाहिए: developer.android.com/guide/topics/ui/themes.html थीम के अलावा, वे ज्यादातर चीजों की शुरुआत करते हैं।
ब्योर्न केचेल

9

क्षमा करें यदि मैं खुद को उत्तर देता हूं, लेकिन, आखिरकार, मेरी समस्या का समाधान कैनरी चैनल द्वारा एंड्रॉइड स्टूडियो को नए संस्करण 0.8.14 में अपडेट किया गया: http://tools.android.com/recent/

अद्यतन के बाद, समस्या दूर हो गई है:

अपडेट के बाद, समस्या दूर हो गई है

मैं यह सवाल उन लोगों के लिए यहां छोड़ता हूं जिन्हें भविष्य में यह समस्या है।


11
नहीं, मैं एंड्रॉइड स्टूडियो 1.2 आरसी 2 पर हूं, और अभी भी यह त्रुटि हो रही है।
इगोरगानपोलस्की

नीचे मेरा जवाब देखें @IgorGanapolsky
gbero

मैं पर Android स्टूडियो 2.2 हूँ और मैं अभी भी समस्या हो रही है
Ab


5

मैंने वही किया जो @ang_lee ने कहा और मैंने इस लाइन को ऐप थीम शैली में भी जोड़ा:

<item name="windowActionBar">false</item>

मैं 26.0.1 संस्करण का उपयोग कर रहा हूं:

com.android.support:design:26.0.1
com.android.support:appcompat-v7:26.0.1

निर्माण उपकरण:

buildToolsVersion "26.0.1"

मुझे यह भी जोड़ना था:<item name="windowNoTitle">true</item
मारियो वेलास्को

2

जब मैं अपने प्रोजेक्ट को प्रिव्यू करना चाहता था, तो मुझे अपने एंड्रॉइड स्टूडियो स्क्रीन पर वही त्रुटि मिली। मैं इस तरीके से समस्या को ठीक करता हूं:

१- मैंने २२ से २१ तक का संस्करण बदला। लेकिन अगर मैं वापस संस्करण २२ में बदल जाता हूं, तो रेंडरिंग टूट जाता है, अगर मैं २१ पर वापस जाता हूं, तो यह फिर से काम करता है। साभार @Overloaded_Operator

मैंने अपना एंड्रॉइड स्टूडियो अपडेट किया लेकिन काम नहीं कर रहा। साभार @ Salvuccio96


1

उपर्युक्त में से किसी ने भी मेरे लिए काम नहीं किया, मैंने 23 से 25.3.1 तक अपने ऐप ग्रेड फ़ाइल में appCompat - v7 संस्करण को अपडेट किया। यह मेरे लिए काम करने में मदद की


1

एप्लिकेशन / Res / मान फ़ोल्डर में style.xml ढूँढें।

शैली की मूल विशेषता "बेस" गायब हो सकती है। इसे शुरू करना चाहिए

<style name="AppTheme" parent="Base.Theme.AppCompat...

0

मेरी भी यही त्रुटि थी। आखिरकार मुझे यह नोटिस मिला कि एक प्लगइन पुराना था:

त्रुटि संवाद

मैं अद्यतन करने के बाद, समस्या चली गई।


0

ऊपर दिए गए समाधानों ने मेरी मदद नहीं की। मैंने इस लिंक से 2 पहले चरण आज़माए हैं । मेरे लिए ठीक काम किया। लेकिन करने के लिए मत भूलना

import com.melnykov.fab.FloatingActionButton; 

के बजाय

import android.support.design.widget.FloatingActionButton;

अपने MainActivity.java में


0

मैं एंड्रॉइड स्टूडियो 2.3.3 का उपयोग करता हूं: - ओपन स्टाइल्स.एक्सएमएल - एंड्रॉइड स्टूडियो दो विकल्पों के साथ शीर्ष दाईं ओर एक अधिसूचना दिखाएगा: "ओपन एडिटर" और "नोटिफिकेशन छिपाएं"। - "ओपन एडिटर" पर क्लिक करें - थीम पेरेंट ड्रॉपडाउन के तहत, सभी थीम दिखाएं पर क्लिक करें - AppCompat से शुरू होने वाले किसी भी विषय का चयन करें ... (मैंने AppComat.DayNight का उपयोग किया है)

NB: यदि आपका शीर्षक बार गायब हो जाता है, तो आपको गतिविधि के बजाय AppCompatActivity का विस्तार करना होगा।

शुभकामनाएं!


0

मुझे अपने ऐप की गतिविधियों में से एक के लिए एक ही समस्या थी, इस समस्या का एक कारण यह है कि थीम एडिटर में थीम 'शैलियों में परिभाषित थीम से अलग हो सकती है।' 'थीम थीम में थीम को बदलें। आपके 'अप्पेथी' या आपके कस्टम परिभाषित विषय (यदि आपने परिभाषित किया है)। ऐसा करने से मेरा मुद्दा ठीक हो गया।


0

मेरी समस्या को भी style.xml में बदलकर हल किया गया है

<!-- Base application theme. -->
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.