1

Ich verfolge dieses Tutorial Flexibal Space with ImageAndroid - Sollten statt Ressource-ID hier aufgelöste Farbe Pass: `GetResources() getColor (R.attr.colorPrimary)`

Für Design-Muster für eine Symbolleiste Flexibal Raum genannt mit Bild in Android. Bei der Verwendung von Palette hier bin ich in folgenden Fehler in java Datei stecken verursacht Anwendung zum Absturz.

Should pass resolved color instead of resource id here: `getResources().getColor(R.attr.colorPrimary)` 

Follwing ist meine Java-Datei YoutubeActivity.java

public class YoutubeActivity extends AppCompatActivity { 

Toolbar toolbar; 
CollapsingToolbarLayout collapsingToolbar; 
int mutedColor = R.attr.colorPrimary; 

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

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

    collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); 
    collapsingToolbar.setTitle("Praval Sharma"); 
    ImageView header = (ImageView) findViewById(R.id.header); 

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), 
      R.drawable.header); 
    Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() { 
     @Override 
     public void onGenerated(Palette palette) { 
      mutedColor = palette.getMutedColor(R.attr.colorPrimary); //error 
      collapsingToolbar.setContentScrimColor(mutedColor);  //error 
     } 
    }); 

} 
} 

und XML-Datei activity_youtube.xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true"> 
<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="192dp" 
    android:fitsSystemWindows="true" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 
    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsing_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:expandedTitleMarginBottom="32dp" 
     app:expandedTitleMarginEnd="64dp" 
     app:expandedTitleMarginStart="48dp" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 
     <ImageView 
      android:id="@+id/header" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@drawable/header" 
      android:fitsSystemWindows="true" 
      android:scaleType="centerCrop" 
      app:layout_collapseMode="parallax" /> 
     <android.support.v7.widget.Toolbar 
      android:id="@+id/anim_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 
    </android.support.design.widget.CollapsingToolbarLayout> 
</android.support.design.widget.AppBarLayout> 
<android.support.v7.widget.RecyclerView 
    android:id="@+id/scrollableview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 
<android.support.design.widget.FloatingActionButton 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_margin="@dimen/fab_margin" 
    android:clickable="true" 
    android:src="@drawable/newfloatnew" 
    app:layout_anchor="@+id/appbar" 
    app:layout_anchorGravity="bottom|right|end" /> 

Und logcat

04-21 17:27:16.660 14865-14865/com.praval.healthfreak W/dalvikvm: threadid=1: calling UncaughtExceptionHandler 
04-21 17:27:16.664 14865-14865/com.praval.healthfreak E/AndroidRuntime: FATAL EXCEPTION: main 
Process: com.praval.healthfreak, PID: 14865 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.praval.healthfreak/com.praval.healthfreak.YoutubeActivity}: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead. 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2389) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441) 
at android.app.ActivityThread.access$900(ActivityThread.java:151) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) 
at android.os.Handler.dispatchMessage(Handler.java:110) 
at android.os.Looper.loop(Looper.java:193) 
at android.app.ActivityThread.main(ActivityThread.java:5345) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead. 
at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:197) 
at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:129) 
at com.praval.healthfreak.YoutubeActivity.onCreate(YoutubeActivity.java:24) 
at android.app.Activity.performCreate(Activity.java:5343) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2343) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2441)  
at android.app.ActivityThread.access$900(ActivityThread.java:151)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)  
at android.os.Handler.dispatchMessage(Handler.java:110)  
at android.os.Looper.loop(Looper.java:193)  
at android.app.ActivityThread.main(ActivityThread.java:5345)  
at java.lang.reflect.Method.invokeNative(Native Method)  

(EDIT) ---> app Thema

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 

((Edit)) -> Manifest-Datei

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

<!-- To access internet --> 
<uses-permission android:name="android.permission.INTERNET" /> 
<!-- To access accounts configured on device --> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<!-- To use account credentials --> 
<uses-permission android:name="android.permission.USE_CREDENTIALS" /> 

<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"> 
     <meta-data 
      android:name="com.google.android.gms.version" 
      android:value="@integer/google_play_services_version" /> 
    </activity> 
    <activity android:name=".Splash"> 

    </activity> 
    <activity android:name=".Form"> 

    </activity> 
    <activity android:name=".YoutubeActivity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".IndexPage" 
     android:label="@string/title_activity_index_page" 
     android:theme="@style/AppTheme.NoActionBar" /> 
    <activity android:name=".FoodEntry"> 

    </activity> 
    <activity android:name=".NewIndex"> 

    </activity> 
</application> 

EDIT - >> entfernt Aktionsleiste von Aktivität, aber gleichen Fehler aufgetreten wie in logcat enter image description here

gezeigt
+1

Sie müssen dies Ihr Thema hinzuzufügen: false true

+1

Ihre Stacktrace enthält tatsächlich eine ziemlich lesbare Nachricht Fehler: 'Diese Aktivität hat bereits eine Aktionsleiste, die von der Fensterdekoration geliefert wird. Fordern Sie Window.FEATURE_SUPPORT_ACTION_BAR nicht an und setzen Sie windowActionBar in Ihrem Theme auf false, um stattdessen eine Toolbar zu verwenden. –

+0

@ JonasKöritz Was soll ich tun, um das Problem zu lösen? –

Antwort

1

Fügen Sie diese zu Ihrem Thema

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

Manifest:

<activity android:name=".YoutubeActivity" 
android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

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

Es ist bereits in meinem Thema hinzugefügt. –

+0

Können Sie den Code und das Manifest Ihres Themas teilen? –

+0

Hinzugefügt Theme's Code –

6

R.attr.colorPrimary ist die Farbe ID. es so versuchen:

mutedColor = palette.getMutedColor(getResources().getColor(R.attr.colorPrimary)); 
collapsingToolbar.setContentScrimColor(mutedColor); 

oder für API 23+ Verwendung:

ContextCompat.getColor(context, R.attr.colorPrimary); 
+1

Es wird angezeigt, 'getColor()' ist veraltet und ein weiterer Fehler 'Erwartete Ressource des Typs Farbe 'in' getColor() ' –

+0

Nur gesehen, es ist in Support-Bibliothek 23 veraltet. Probieren Sie dies: ContextCompat.getColor (Kontext, R.color. Ihre_Farbe); – Bene

+0

Hinzugefügt aber jetzt wie man 'collapsingToolbar.setContentScrimColor (mutedColor); 'Da in dieser Zeile auch der gleiche Fehler angezeigt wird. –

0

Try R.color.colorPrimary statt R.at.colorPrimary. Spezifizieren Sie Farben in Farben.XML-Datei in res/Werte

+0

Fehler bleibt nach dem Ersetzen von 'Attr' zu' Farbe'. 'Soll hier die aufgelöste Farbe anstelle der Ressourcen-ID übergeben werden:' getResources(). GetColor (R.color.colorPrimary) ' –

+0

Überprüfen Sie auch, ob in der Datei colors.xml die Farbe als' # FFFFFF ' –

0

die int als ColorInt deklarieren wie folgt

@ColorInt int mutedColor

0

ich genau das gleiche Problem konfrontiert, und hier ist meine Lösung für dieses,

mutedColor = palette.getMutedColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary);); 
collapsingToolbar.setContentScrimColor(mutedColor); 

Hope Diese hilft! ..

Update: Ich weiß, es klingt komisch/dumm, ich habe nur die Inspektion deaktiviert Das ist kein Kompilierzeitfehler und kein Laufzeitfehler. Ich wollte dich nur wissen lassen, Jungs.