1

Я следую этому учебник Flexibal Space with ImageAndroid - должен пройти разрешен цвета вместо идентификатора ресурса здесь: `GetResources() GetColor (R.attr.colorPrimary)`

Для шаблона проектирования на панель инструментов под названием Flexibal пространства с Изображение в android. При использовании Palette здесь я застрял в следующей ошибке в файле java, приводящем к сбою приложения.

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

Follwing мой Java файл 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 
     } 
    }); 

} 
} 

И XML файл 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" /> 

И 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) ---> приложение тема

<!-- 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)) -> Файл манифеста

<?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> 

РЕДАКТИРОВАТЬ - >> Удалена панель действий от активности, но такой же ошибки произошла, как показано на LogCat enter image description here

+1

Вы должны добавить к вашей теме: <пункт имени = «windowActionBar»> ложного<имени элемента = «windowNoTitle»> истинного –

+1

Вашего StackTrace фактически содержит сообщение довольно читаемое об ошибке: 'Этой активности уже имеет панель действий, предоставляемая декором окна. Не запрашивайте Window.FEATURE_SUPPORT_ACTION_BAR и установите для windowActionBar значение false в вашей теме, чтобы вместо этого использовать панель инструментов. –

+0

@ JonasKöritz Что мне делать для решения проблемы –

ответ

1

Добавить это к вашей теме

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

манифест:

<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

Это уже добавлено в мою тему. –

+0

Можете ли вы поделиться своим текстом и манифестом? –

+0

Добавлен код темы –

6

R.attr.colorPrimary цвета ID. Попробуйте так:

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

или для API 23+ использования:

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

Показывает, что 'getColor()' устарел и еще одна ошибка «Ожидаемый ресурс цвета типа» в 'getColor()' –

+0

Только что он устарел в Библиотеке поддержки 23. Попробуйте это: ContextCompat.getColor (context, R.color. your_color); – Bene

+0

Добавлено, но теперь, как изменить 'collapsingToolbar.setContentScrimColor (mutedColor); 'так же, как и в этой строке. –

0

TryR.color.colorPrimary вместо R.attr.colorPrimary. Укажите цвета в цветах.XML-файл в разрешении/значение

+0

Ошибка остается после замены 'attr' на' color'. 'Должен передать разрешенный цвет вместо идентификатора ресурса здесь:' getResources(). GetColor (R.color.colorPrimary) ' –

+0

Также проверьте, что в файле colors.xml вы указываете цвет как' # FFFFFF ' –

0

Объявите ИНТАС ColorInt следующий

@ColorInt int mutedColor

0

Я столкнулся с точно такой же проблемой, и вот мое решение для этого,

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

Надежды это помогает! ..

Обновление: Я знаю, это звучит смешно/немой, я просто отключил проверку ion, то есть, это не ошибка времени компиляции и ошибка времени выполнения. Я просто хотел дать вам знать, ребята.

 Смежные вопросы

  • Нет связанных вопросов^_^