我想在控制台中打印一些东西,以便调试它.但由于某些原因,我的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");
    }

推荐答案

Correction:

在仿真器上,并且大多数设备System.out.println被重定向到logcat并使用Log.i()打印.在非常旧的或定制的Android版本上,这可能不是真的.

Original:

没有控制台可以向其发送消息,因此System.out.println条消息会丢失.同样,当您使用javaw运行"传统的"Java应用程序时也会发生这种情况.

相反,您可以使用Android Log class:

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

然后,您可以在Eclipse的Logcat视图中查看日志(log),也可以通过运行以下命令来查看日志(log):

adb logcat

养成查看logcat输出的习惯是很好的,因为这也是显示任何未捕获异常的堆栈跟踪的地方.

每个日志(log)调用的第一个条目是标识日志(log)消息源的日志(log)标记.这很有用,因为你可以过滤日志(log)的输出,只显示你的消息.为了确保与日志(log)标记一致,最好将其定义为static final String.

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

Log中有五种单字母方法,对应于以下级别:

  • e()-错误
  • w()-警告
  • i()-信息
  • d()-调试
  • v()-详细
  • wtf()--多么可怕的失败啊

documentation says the following about the levels人:

除非在开发过程中,否则决不能将详细信息编译到应用程序中.调试日志(log)在中编译,但在运行时剥离.始终保留错误、警告和信息日志(log).

Java相关问答推荐

判断大写字符串的Java方法总是返回假

当列顺序更改时,Table View列列表的Change. wasPermanted()总是返回假

Android视图覆盖不阻止点击它后面的控件

为什么Java中的两个日期有差异?

工件部署期间出错[Tomcat 8.5.45]

我无法将附件发送到NetBeans之外

扩展到弹出窗口宽度的JavaFX文本字段

DTO到实体,反之亦然,控制器和服务之间的哪一层应该处理转换?

Jenv-相同的Java版本,但带有前缀

如何仅使用键/ID的一部分(组合)高效地返回映射值?

如何将Java文档配置为在指定的项目根目录中生成?

如何在Java中为thunk创建映射器函数

Java创建带有扩展通配符的抽象处理器

如何获得凌空cookies ,并设置它在下一个请求- android

如何在Maven Central上部署?

Java List有一个在一个位置添加多个元素的方法,但我找不到一个在一个位置删除多个元素的方法

如何使用jOOQ在PostgreSQL中从枚举类型生成Java枚举

OpenJDK20:JEP434:Foreign Function&;内存API(第二次预览)

简化每个元素本身都是 map 列表的列表

Springboot应用程序无法识别任何@RestController或@Service,我认为@Repository也无法识别