Ich möchte etwas in der Konsole drucken, damit ich es debuggen kann. Aber aus irgendeinem Grund wird in meiner Android-Anwendung nichts gedruckt.
Wie debugge ich dann?
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");
}
Antworten:
Korrektur:
Auf dem Emulator und den meisten Geräten
System.out.println
wird zu LogCat umgeleitet und mit gedrucktLog.i()
. Dies gilt möglicherweise nicht für sehr alte oder benutzerdefinierte Android-Versionen.Original:
Es gibt keine Konsole, an die die Nachrichten gesendet werden können, sodass die
System.out.println
Nachrichten verloren gehen. Auf die gleiche Weise geschieht dies, wenn Sie eine "traditionelle" Java-Anwendung mit ausführenjavaw
.Stattdessen können Sie die Android-
Log
Klasse verwenden :Sie können das Protokoll dann entweder in der Logcat- Ansicht in Eclipse oder durch Ausführen des folgenden Befehls anzeigen :
Es ist gut, sich daran zu gewöhnen, die Logcat-Ausgabe zu betrachten, da dort auch die Stapelspuren nicht erfasster Ausnahmen angezeigt werden.
Der erste Eintrag zu jedem Protokollierungsaufruf ist das Protokoll-Tag, das die Quelle der Protokollnachricht identifiziert. Dies ist hilfreich, da Sie die Ausgabe des Protokolls filtern können, um nur Ihre Nachrichten anzuzeigen. Um sicherzustellen, dass Sie mit Ihrem Protokoll-Tag übereinstimmen, ist es wahrscheinlich am besten, es einmal als
static final String
irgendwo zu definieren .Es gibt fünf Ein-Buchstaben-Methoden
Log
, die den folgenden Ebenen entsprechen:e()
- Errorw()
- Warnungi()
- Informationd()
- Debuggenv()
- Ausführlichwtf()
- Was für ein schrecklicher FehlerIn der Dokumentation wird Folgendes zu den Ebenen angegeben :
quelle
Verwenden Sie die Log-Klasse . Ausgabe mit LogCat sichtbar
quelle
Ja tut es. Wenn Sie den Emulator verwenden, wird er in der Logcat-Ansicht unter dem
System.out
Tag angezeigt . Schreiben Sie etwas und probieren Sie es in Ihrem Emulator aus.quelle
Um das Ergebnis in logcat zu sehen, sollten Sie natürlich die Protokollstufe mindestens auf "Info" ( Protokollstufe in logcat ) setzen. Andernfalls, wie es mir passiert ist, werden Sie Ihre Ausgabe nicht sehen.
quelle
Wenn Sie System.out.println wirklich zum Arbeiten benötigen (z. B. wird es von einer Drittanbieter-Bibliothek aufgerufen). Sie können einfach die Reflexion verwenden, um das Feld in System.class zu ändern:
RedirectLogOutputStream-Klasse:
quelle
Es wird in Ihrer Anwendung nicht angezeigt. Es befindet sich unter dem Logcat Ihres Emulators
quelle
Es gibt keinen Ort auf Ihrem Telefon, an dem Sie das lesen können
System.out.println();
Wenn Sie stattdessen das Ergebnis von etwas sehen möchten, schauen Sie entweder in Ihr
logcat/console
Fenster oder lassen Sie einToast
oder einSnackbar
(wenn Sie sich auf einem neueren Gerät befinden) auf dem Bildschirm des Geräts mit der Meldung erscheinen :) Das ist, was ich tue, wenn ich überprüfen muss Zum Beispiel, wo es in einemswitch case
Code geht! Viel Spaß beim Codieren! :) :)quelle
Android Monitor
und dannlogcat
klicke, werden ständig viele, viele Nachrichten gedruckt ... Soll es so sein? Wie würde ich dann meine eigenen Debug-Meldungen sehen?System.out.println ("...") wird auf dem Android-Monitor in Android Studio angezeigt
quelle
Ich überlasse dies weiteren Besuchern, da es für mich etwas war, was der Haupt-Thread nicht konnte
System.out.println
.Verwendung:
LogUtil.println("This is a string");
quelle
Kürzlich habe ich das gleiche Problem in Android Studio 3.3 bemerkt. Ich schloss die anderen Android Studio-Projekte und Logcat begann zu arbeiten. Die oben akzeptierte Antwort ist überhaupt nicht logisch.
quelle