210 votes

Pourquoi "System.out.println" ne fonctionne-t-il pas sous Android ?

Je veux imprimer quelque chose dans la console, afin de pouvoir la déboguer. Mais pour une raison quelconque, rien ne s'imprime dans mon application Android.

Comment déboguer alors ?

public class HelloWebview extends Activity {
    WebView webview;    
    private static final String LOG_TAG = "WebViewDemo";
    private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        webview = (WebView) findViewById(R.id.webview);
        webview.setWebViewClient(new HelloWebViewClient());
        webview.getSettings().setJavaScriptEnabled(true);
        webview.setWebChromeClient(new MyWebChromeClient());
        webview.loadUrl("http://example.com/");    
        System.out.println("I am here");
    }

5 votes

Bien que vous ayez obtenu la réponse ci-dessous, j'aimerais ajouter que la sortie des instructions SOP est également dirigée vers LogCat : seulement, le nom de la balise serait System.out.

1 votes

Avant la version 0.9, System.out était perdu, je pense. Après il a été passé à la sortie logcat : code.google.com/p/Android/issues/detail?id=92 . (Si vous utilisez une bibliothèque existante ou autre qui utilise System.out, à tort ou à raison, elle apparaîtra dans logcat avec les versions ultérieures d'Android).

0 votes

Nous pouvons voir les System.out.printlns dans le logcat.

2voto

Adrian Loh Points 21

Il n'est pas affiché dans votre application... il est dans le logcat de votre émulateur

1voto

Wesos de Queso Points 446

System.out.println("...") s'affiche sur l'Android Monitor dans Android Studio

1voto

Goldfish Points 121

Solution qui a fonctionné pour moi :

Sous Logcat . (Pour afficher Logcat s'il n'est pas déjà affiché. Cliquez sur le menu Affichage-->Outil Windows-->Logcat). Il est affiché en tant que System.out et non en tant que System.out.println comme on pourrait s'y attendre. Reconstruction l'application si ce n'est pas déjà fait.

Sur la photo, surligné en jaune affiche le fichier System.out et la sortie "Hello again".

enter image description here

0voto

Valentin Filyov Points 517

Il n'y a pas d'endroit sur votre téléphone où vous pouvez lire les System.out.println();

Au lieu de cela, si vous voulez voir le résultat de quelque chose, regardez votre logcat/console ou de faire un Toast ou un Snackbar (si vous êtes sur un appareil plus récent) apparaissent sur l'écran de l'appareil avec le message :) C'est ce que je fais lorsque je dois vérifier, par exemple, où il va dans une switch case code ! Amusez-vous bien à coder ! :)

0voto

Nut eater Points 16

Je laisserai cette question à d'autres visiteurs, car pour moi, il s'agissait de l'impossibilité pour le fil principal de se connecter à la page d'accueil. System.out.println .

public class LogUtil {

private static String log = "";
private static boolean started = false;
public static void print(String s) {
    //Start the thread unless it's already running
    if(!started) {
        start();
    }
    //Append a String to the log
    log += s;
}

public static void println(String s) {
    //Start the thread unless it's already running
    if(!started) {
        start();
    }
    //Append a String to the log with a newline.
    //NOTE: Change to print(s + "\n") if you don't want it to trim the last newline.
    log += (s.endsWith("\n") )? s : (s + "\n");
}

private static void start() {
    //Creates a new Thread responsible for showing the logs.
    Thread thread = new Thread(new Runnable() {
        @Override
        public void run() {
            while(true) {
                //Execute 100 times per second to save CPU cycles.
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                //If the log variable has any contents...
                if(!log.isEmpty()) {
                    //...print it and clear the log variable for new data.
                    System.out.print(log);
                    log = "";
                }
            }
        }
    });
    thread.start();
    started = true;
}
}

Utilisation : LogUtil.println("This is a string");

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