1. ホーム
  2. ジャワ

[解決済み】Androidで "System.out.println "が機能しないのはなぜですか?

2022-03-03 23:45:33

質問

デバッグのために、コンソールに何かを表示したいのですが、どうすればいいですか? しかし、私のAndroidアプリケーションでは、なぜか何も表示されません。

デバッグはどうすればいいのですか?

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");
    }

解決方法は?

訂正します。

エミュレータとほとんどのデバイスで System.out.println は LogCat にリダイレクトされ、次のように出力されます。 Log.i() . これは、非常に古いバージョンやカスタムバージョンのAndroidでは当てはまらないかもしれません。

オリジナルです。

メッセージを送信するコンソールがないので System.out.println のメッセージは失われてしまいます。 同じように、quot;traditional" Javaアプリケーションを javaw .

その代わりに アンドロイド Log クラス :

Log.d("MyApp","I am here");

ログを見るには ログキャット をEclipseで表示するか、以下のコマンドを実行してください。

adb logcat

logcatの出力には、キャッチされなかった例外のスタックトレースも表示されるので、それを見る習慣をつけるとよいでしょう。

すべてのログの呼び出しに対する最初のエントリは、ログメッセージのソースを識別するためのログタグです。 これは、メッセージだけを表示するために、ログの出力をフィルタリングするのに便利です。 ログタグに一貫性があることを確認するために、おそらく、ログタグを static final String をどこかに書いてください。

Log.d(MyActivity.LOG_TAG,"Application started");

には5つの一文字のメソッドがあります。 Log は、以下のレベルに対応する。

  • e() - エラー
  • w() - 警告
  • i() - 情報
  • d() - デバッグ
  • v() - バーボーズ
  • wtf() - なんてひどい失敗なんだ

のドキュメントには、レベルについて次のように書かれています。 :

Verboseは、開発時以外、アプリケーションにコンパイルしてはいけません。デバッグログはコンパイルされますが、実行時には取り除かれます。エラーログ、警告ログ、情報ログは常に保持されます。