3
votes

Impossible d'utiliser Toast sur Samsung A5 (2016)

La dernière fois, je travaillais sur le même projet et j'ai pu utiliser Toasts. Mais aujourd'hui, lorsque j'essaie d'utiliser Toast, rien ne s'affiche. J'ai fait de mon mieux pour résoudre ce problème, mais je n'ai pas réussi.

Voici ce que j'exécute [MISE À JOUR].

01-13 19:28:36.473 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@ede0223[MainActivity]: ViewPostImeInputStage processPointer 0
01-13 19:28:36.474 26670-26670/com.azeem.abubakar.dbm W/System: ClassLoader referenced unknown path: /system/framework/QPerformance.jar
01-13 19:28:36.476 26670-26670/com.azeem.abubakar.dbm E/BoostFramework: BoostFramework() : Exception_1 = java.lang.ClassNotFoundException: Didn't find class "com.qualcomm.qti.Performance" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib, /vendor/lib]]
01-13 19:28:36.538 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@ede0223[MainActivity]: ViewPostImeInputStage processPointer 1
01-13 19:28:36.543 26670-26670/com.azeem.abubakar.dbm D/[INFO]: Just Above Toast!
01-13 19:28:36.552 26670-26670/com.azeem.abubakar.dbm D/TextView: setTypeface with style : 0
01-13 19:28:36.560 26670-26670/com.azeem.abubakar.dbm D/[INFO]: Just Below Toast!
01-13 19:28:36.565 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: ThreadedRenderer.create() translucent=true
01-13 19:28:36.571 26670-26670/com.azeem.abubakar.dbm D/InputTransport: Input channel constructed: fd=82
01-13 19:28:36.571 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: setView = android.widget.LinearLayout{5b8d649 V.E...... ......I. 0,0-0,0} touchMode=true
01-13 19:28:36.572 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: dispatchAttachedToWindow
01-13 19:28:36.593 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: Relayout returned: oldFrame=[0,0][0,0] newFrame=[277,1596][802,1728] result=0x27 surface={isValid=true -750856192} surfaceGenerationChanged=true
    mHardwareRenderer.initialize() mSurface={isValid=true -750856192} hwInitialized=true
01-13 19:28:36.594 26670-26713/com.azeem.abubakar.dbm D/mali_winsys: EGLint new_window_surface(egl_winsys_display*, void*, EGLSurface, EGLConfig, egl_winsys_surface**, egl_color_buffer_format*, EGLBoolean) returns 0x3000,  [525x132]-format:1
01-13 19:28:36.631 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: MSG_RESIZED_REPORT: frame=Rect(277, 1596 - 802, 1728) ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1
01-13 19:28:38.565 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: mHardwareRenderer.destroy()#4
01-13 19:28:38.582 26670-26670/com.azeem.abubakar.dbm D/ViewRootImpl@3da3450[Toast]: dispatchDetachedFromWindow
01-13 19:28:38.591 26670-26670/com.azeem.abubakar.dbm D/InputTransport: Input channel destroyed: fd=82

Voici ce que Logcat affiche lorsque je clique sur le bouton Démarrer .

package com.azeem.abubakar.dbm;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {

    private Button btn_start;

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

        // Initialization
        btn_start = (Button) findViewById(R.id.btn_start);

        //Click Listener for Start Button
        btn_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View tView) {

                Log.d("[INFO]", "Just Above Toast!");
                Toast.makeText(MainActivity.this, "Start button Clicked", Toast.LENGTH_SHORT).show();
                Log.d("[INFO]", "Just Below Toast!");

            }
        });

    }
}

Veuillez m'aider. Merci.

MISE À JOUR:

La notification est activée pour cette application dans les paramètres.

Mais Toast ne montre pas. Ce que j'ai compris, il peut s'agir d'un problème lié à l'appareil, veuillez me corriger si je me trompe. La raison pour laquelle j'ai dit que c'était un problème lié à l'appareil est que la dernière fois que j'ai utilisé Toasts, tout fonctionnait, mais après avoir installé une mise à jour de sécurité dans mon appareil Samsung Galaxy, le toast ne s'affiche pas du tout.

Mon modèle mobile est Samsung A5 (2016). Veuillez consulter les captures d'écran ci-jointes pour obtenir des informations sur le logiciel. Informations sur le logiciel (1/2) Informations sur le logiciel (2/2)


6 commentaires

J'ai fait un projet vanille avec Toast et tout fonctionne. Qu'avez-vous changé?


Dans mon projet, je n'ai rien changé. Mais j'ai installé une mise à jour de sécurité sur mon appareil Samsung Galaxy que j'utilise.


heave vous essayez ma réponse spécialement runOnUiThread?


oui en utilisant Toast dans MainActivity. Merci pour votre inquiétude.


Avez-vous déjà trouvé une solution ou une solution de contournement? J'ai le même problème ici, des toasts sur tous les appareils, à l'exception de deux Samsung A5!


Toujours pas en mesure de trouver une solution.


5 Réponses :


0
votes

Essayez getApplicationContext () au lieu de getBaseContext () . Accédez à ce lien pour savoir où utiliser quel contexte.
différence et quand utiliser getApplication (), getApplicationContext (), getBaseContext () et someClass.this


1 commentaires

Merci pour votre réponse. Je l'ai essayé mais je ne travaille pas sur mon appareil



1
votes

Essayez de changer ceci:

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

    EditText edtxt_fileName = findViewById(R.id.edtxt_fileName);
    edtxt_fileName.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String fileName = s.toString();
            if (fileName.equals("")) {
                Log.d("[INFO]", "Just Above Toast!");
                Toast.makeText(getApplicationContext(), "Enter Valid File Name!!", Toast.LENGTH_SHORT).show();
                Log.d("[INFO]", "Just Below Toast!");
            }
            else{   // to show every text change 
                Toast.makeText(getApplicationContext(), "Text: " + fileName, Toast.LENGTH_SHORT).show();   
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

en getApplicationContext () ou getApplication () ou this ou MainActivity.this (page java android.this).

Exemple:

Toast.makeText(getApplicationContext(), "Enter Valid File Name!!", Toast.LENGTH_SHORT).show();

Assurez-vous d'utiliser This sur Méthode onTextChanged :

getBaseContext()


4 commentaires

Merci pour votre réponse. J'ai remplacé getBaseContext () mais Toast ne s'affiche toujours pas.


Mise à jour de ma réponse, @AbubakarAzeem, veuillez vérifier à nouveau ma réponse et si cette réponse ou une autre a résolu votre question, envisagez de l'accepter en cliquant sur la coche. Cela indique à la communauté au sens large que vous avez trouvé une solution et donne une certaine réputation à la fois au répondant et à vous-même. Il n'y a aucune obligation de le faire.


Oui, je comprends @guy que je devrais marquer la bonne réponse. Mais mon problème n'est pas résolu et j'ai essayé toutes les suggestions. Veuillez vérifier mon message, je l'ai mis à jour. Il n'y a aucun problème de code et Toast fonctionne sur d'autres appareils. Merci pour votre inquiétude.


J'ai vérifié le code sur mon appareil et cela fonctionne. Ça pourrait être la mise à jour, désolé mon frère.



1
votes

Essayez de changer ceci:

 Toast.makeText(getApplicationContext(), "Enter Valid File Name!!", Toast.LENGTH_SHORT).show();

En:

 Toast.makeText(getBaseContext(), "Enter Valid File Name!!", Toast.LENGTH_SHORT).show();


5 commentaires

Merci pour votre réponse. Je l'ai essayé mais Toast ne s'affiche toujours pas.


Pouvez-vous publier un peu plus de code pour que je puisse suivre votre problème?


J'exécute simplement ce code dans l'écouteur onClick () d'un Button. Aucun problème de code. L'application ne plante pas. Juste avant et après avoir appelé toast, j'ai imprimé des informations avec la balise [INFO] comme vous pouvez le vérifier dans Logcat ci-dessus.


@AbubakarAzeem permet de l'essayer - changez getBaseContext en - Activity.this


Oui, je l'ai modifié avec Activity.this .. Ne s'affiche pas sur mon appareil



2
votes

1- Veuillez vérifier si vous essayez d'afficher Toast sur le fil principal ?? sinon essayez ce code

((MainActivity)context).runOnUiThread(new Runnable() {
    public void run() {
           Toast.makeText(MainActivity.this, "Enter Valid File Name!!", Toast.LENGTH_SHORT).show();

    }
});

2- Deuxièmement, essayez d'utiliser YourActivith.this au lieu de getBaseContext ()

3- Parfois, lorsque le clavier est ouvert, le toast est visible mais derrière votre logiciel clavier essayez d'abord de fermer le clavier, puis voyez.

J'espère que l'un d'entre eux vous aidera!


2 commentaires

Oui, j'utilise Toast dans MainActivity.


essayez-vous de le montrer sur le fil principal ?? signifie que vous ne pouvez pas afficher de pain grillé sur le fil d'arrière-plan, vous devez donc le confirmer.



0
votes

essayez d'initialiser le contexte dans oncreate et passez ce contexte lors de l'affichage du code cela peut fonctionner


0 commentaires