Saya ingin mencetak sesuatu di konsol, sehingga saya bisa men-debugnya. Tapi untuk beberapa alasan, tidak ada yang tercetak di aplikasi Android saya.
Bagaimana cara saya debug?
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");
}
Jawaban:
Koreksi:
Pada emulator dan sebagian besar perangkat
System.out.println
akan dialihkan ke LogCat dan dicetak menggunakanLog.i()
. Ini mungkin tidak benar pada versi Android yang sangat lama atau khusus.Asli:
Tidak ada konsol untuk mengirim pesan sehingga
System.out.println
pesan hilang. Dengan cara yang sama ini terjadi ketika Anda menjalankan aplikasi Java "tradisional" denganjavaw
.Sebagai gantinya, Anda dapat menggunakan kelas Android
Log
:Anda kemudian dapat melihat log di tampilan Logcat di Eclipse, atau dengan menjalankan perintah berikut:
Adalah baik untuk membiasakan diri melihat keluaran logcat karena itu juga tempat Stack Traces dari setiap Pengecualian yang tidak tertangkap ditampilkan.
Entri pertama untuk setiap panggilan logging adalah tag log yang mengidentifikasi sumber pesan log. Ini bermanfaat karena Anda dapat memfilter keluaran log untuk hanya menampilkan pesan Anda. Untuk memastikan bahwa Anda konsisten dengan tag log Anda, mungkin yang terbaik adalah mendefinisikannya sekali sebagai suatu
static final String
tempat.Ada lima metode satu huruf yang
Log
terkait dengan level berikut:e()
- Kesalahanw()
- Peringatani()
- Informasid()
- Debugv()
- Verbosewtf()
- Kegagalan yang MengerikanThe dokumentasi mengatakan berikut tentang tingkat :
sumber
Gunakan kelas Log . Output terlihat dengan LogCat
sumber
Ya itu. Jika Anda menggunakan emulator, itu akan ditampilkan di tampilan Logcat di bawah
System.out
tag. Tulis sesuatu dan coba di emulator Anda.sumber
Tentu saja, untuk melihat hasilnya di logcat, Anda harus mengatur level Log setidaknya ke "Info" ( Level log di logcat ); jika tidak, seperti yang terjadi pada saya, Anda tidak akan melihat hasil Anda.
sumber
jika Anda benar-benar membutuhkan System.out.println untuk bekerja (mis. ini dipanggil dari perpustakaan pihak ketiga). Anda cukup menggunakan refleksi untuk mengubah bidang di System.class:
Kelas RedirectLogOutputStream:
sumber
itu tidak ditampilkan di aplikasi Anda ... itu di bawah logcat emulator Anda
sumber
Tidak ada tempat di ponsel Anda yang dapat Anda baca
System.out.println();
Sebaliknya, jika Anda ingin melihat hasil dari sesuatu yang terlihat di
logcat/console
jendela Anda atau membuatToast
atauSnackbar
(jika Anda menggunakan perangkat yang lebih baru) muncul di layar perangkat dengan pesan :) Itulah yang saya lakukan ketika saya harus memeriksa misalnya di mana ia pergi dalamswitch case
kode! Selamat coding! :)sumber
Android Monitor
dan kemudianlogcat
, saya melihat banyak pesan yang terus-menerus dicetak ... Apakah seharusnya seperti ini? Lalu bagaimana saya melihat pesan debug saya sendiri?System.out.println ("...") ditampilkan pada Monitor Android di Android Studio
sumber
Saya akan meninggalkan ini untuk pengunjung lebih lanjut karena bagi saya itu adalah sesuatu tentang utas utama yang tidak dapat
System.out.println
.Pemakaian:
LogUtil.println("This is a string");
sumber
Baru-baru ini saya perhatikan masalah yang sama di Android Studio 3.3. Saya menutup proyek studio Android lainnya dan Logcat mulai bekerja. Jawaban yang diterima di atas sama sekali tidak logis.
sumber