Chcę wydrukować coś w konsoli, aby móc to debugować. Ale z jakiegoś powodu nic nie jest drukowane w mojej aplikacji na Androida.
Jak mam wtedy debugować?
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");
}
Odpowiedzi:
Korekta:
Na emulatorze i większości urządzeń
System.out.println
zostaje przekierowany do LogCat i wydrukowany przy użyciuLog.i()
. Może to nie dotyczyć bardzo starych lub niestandardowych wersji Androida.Oryginalny:
Nie ma konsoli, do której można wysyłać wiadomości, aby
System.out.println
się zgubiły. W ten sam sposób dzieje się to po uruchomieniu „tradycyjnej” aplikacji Javajavaw
.Zamiast tego możesz użyć klasy Androida
Log
:Następnie możesz wyświetlić dziennik w widoku Logcat w Eclipse lub uruchamiając następujące polecenie:
Dobrze jest przyzwyczaić się do patrzenia na dane wyjściowe logcat, ponieważ tam również są wyświetlane ślady stosu wszelkich nieprzechwyconych wyjątków.
Pierwszym wpisem do każdego wywołania logowania jest tag dziennika, który identyfikuje źródło komunikatu dziennika. Jest to pomocne, ponieważ można filtrować dane wyjściowe dziennika, aby wyświetlać tylko wiadomości. Aby upewnić się, że jesteś zgodny ze swoim tagiem dziennika, prawdopodobnie najlepiej jest zdefiniować go
static final String
gdzieś.Istnieje pięć jednoliterowych metod
Log
odpowiadających następującym poziomom:e()
- Błądw()
- Ostrzeżeniei()
- Informacjad()
- Debugowaniev()
- Pełnewtf()
- Co za straszna porażkaDokumentacja mówi o następujące poziomy :
źródło
Użyj klasy Log . Dane wyjściowe widoczne za pomocą LogCat
źródło
Tak. Jeśli używasz emulatora, pojawi się on w widoku Logcat pod
System.out
tagiem. Napisz coś i spróbuj w emulatorze.źródło
Oczywiście, aby zobaczyć wynik w logcat, powinieneś ustawić Poziom Logowania przynajmniej na „Info” ( Poziom Logu w logcat ); w przeciwnym razie, jak mi się przydarzyło, nie zobaczysz swoich wyników.
źródło
jeśli naprawdę potrzebujesz System.out.println do pracy (np. jest wywoływany z biblioteki innej firmy). możesz po prostu użyć odbicia, aby zmienić pole w System.class:
Klasa RedirectLogOutputStream:
źródło
nie jest wyświetlany w aplikacji ... znajduje się pod logcat emulatora
źródło
W telefonie nie ma miejsca, w którym można by przeczytać
System.out.println();
Zamiast tego, jeśli chcesz zobaczyć wynik czegoś albo spojrzeć na
logcat/console
okno albo sprawić, że na ekranie urządzenia pojawi się aToast
lub aSnackbar
(jeśli jesteś na nowszym urządzeniu) z komunikatem :) Tak właśnie robię, kiedy muszę sprawdzić na przykład, gdzie idzie wswitch case
kodzie! Miłego kodowania! :)źródło
Android Monitor
a potemlogcat
widzę wiele wiadomości ciągle drukowanych ... Czy tak powinno być? Jak w takim razie mogę zobaczyć moje własne komunikaty debugowania?System.out.println („...”) jest wyświetlany na monitorze Androida w Android Studio
źródło
Zostawię to kolejnym odwiedzającym, ponieważ dla mnie było to coś, czego główny wątek nie był w stanie
System.out.println
.Stosowanie:
LogUtil.println("This is a string");
źródło
Ostatnio zauważyłem ten sam problem w Android Studio 3.3. Zamknąłem inne projekty studia na Androida i Logcat zaczął działać. Przyjęta powyżej odpowiedź w ogóle nie jest logiczna.
źródło