2 votes

Modifier l'arrière-plan de la vue dans Xamarin Android

Dans mon application, je veux changer l'arrière-plan de la vue en une couleur basée sur une valeur entière. Tout fonctionne bien, sauf lorsque la valeur change. Après l'exécution de la méthode, seule une partie de la vue est mise à jour. Après avoir quitté l'application et être revenu, la vue entière est mise à jour correctement, mais comment puis-je le faire sans changer d'application ?

Code pour effectuer des changements de couleur de fond :

public void SetColor(int status)
    {
        View colorView = FindViewById(Resource.Id.view1);

        // Find the root view
        View root = colorView.RootView;
        string color = "";
        Log.Debug(TAG, string.Format("SetColor: {0}", status));

        switch (status)
        {
            case 1:
                Log.Debug(TAG, "1");
                color = "Red";
                break;
            case 2:
                Log.Debug(TAG, "2");
                color = "Yellow";
                break;
            case 3:
                Log.Debug(TAG, "3");
                color = "Green";
                break;
            case 4:
                Log.Debug(TAG, "4");

                color = "YellowGreen";
                break;
            case 5:
                Log.Debug(TAG, "5");        
                color = "Grey";
                break;
            default:
                Log.Debug(TAG, "6");
                break;
        }
        Log.Debug(TAG, string.Format("Color: {0}", color));
        root.SetBackgroundColor(Color.ParseColor(color));
    }

Edit 1

Cette méthode est appelée depuis la classe Database et est appelée lorsqu'une valeur est modifiée dans la base de données :

void PostgresNotification(object sender, NpgsqlNotificationEventArgs e)
    {
        var fase = e.AdditionalInformation;
        main.SetColor(Convert.ToInt32(fase));
    }

Où main est passé dans le constructeur de la base de données

MainActivity main;
public Database(MainActivity mainActivity)
    {
            //Shortened for brevity
            main = mainActivity;
    }

Le constructeur est appelé dans la fonction OnCreate() de MainActivity.

protected override void OnCreate(Bundle savedInstanceState)
    {
        //Shortened for brevity
        db = new Database(this);
    }

Problème :

Update problem

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X