2017-06-27 4 views
1

J'ai un convertisseur qui ne fonctionne qu'en mode débogage. Quand je génère un Release .apk, ça ne marche plus.ColorStateList Converter fonctionne uniquement en mode débogage

Voici mon code:

public class CardapioImageColorConverter : MvxValueConverter<bool, ColorStateList> 
{ 
    private static Activity Activity => Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity; 
    protected override ColorStateList Convert(bool value, Type targetType, object parameter, CultureInfo culture) 
    { 
     ColorStateList color; 
     if (value) 
      color = Activity.Resources.GetColorStateList(Resource.Color.cor1,Activity.Theme); 
     else 
      color = Activity.Resources.GetColorStateList(Resource.Color.white, Activity.Theme); 

     return color; 
    } 
} 

Et mon AXML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:local="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical" 
    android:layout_width="70dp" 
    android:layout_height="70dp"> 
    <Mvx.MvxImageView 
     android:id="@+id/imageView" 
     android:layout_weight="1" 
     android:tint="@color/white" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     local:MvxBind="ImageUrl Icone;ImageTintList CardapioImageColor(Selecionado);" 
     android:layout_gravity="center" /> 
    <TextView 
     local:MvxBind="Text Nome; TextColor CardapioTextColor(Selecionado);" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:textColor="@color/cor1" 
     android:textSize="11dp" 
     android:layout_weight="1.9" 
     android:text="@string/lista_espera" 
     android:gravity="center" 
     android:layout_marginBottom="@dimen/margin_tiny" 
     android:layout_marginTop="@dimen/margin_tiny" /> 
</LinearLayout> 

Il fonctionne parfaitement en mode débogage. Avez-vous une idée de pourquoi cela arrive?

+0

Utilisez-vous une bibliothèque tierce pour 'Mvx.MvxImageView'? –

+0

En mode débogage, essayez d'activer l'éditeur de liens. Avez-vous des erreurs? – Cheesebaron

+0

J'utilise uniquement les assemblys sdk, dans les deux cas. DeBug et Release. –

Répondre

0

Je viens de trouver la solution!

J'utilise la liaison, donc, le convertisseur ne fonctionnait pas parce que l'éditeur de liens était activé.

J'ai mis cette méthode dans une classe appelée "LinkerPleaseInclude".

public void Include(MvxImageView mvxImage) 
    { 
     mvxImage.ImageTintList = mvxImage.ImageTintList; 
    } 

Cette classe est jamais réellement exécuté, mais quand la liaison Xamarin est activée il ne comment assurer les types et les propriétés sont conservés dans l'application déployée.