android log

Android中的日志工具类Log详细介绍 Android中的日志工具类是Log ( android.util.Log ),这个类中提供了如下5个方法来供我们打印日志。 方法名称: 方法功能: Log.v() 用于打印那些最为琐碎的、意义最小的日志信息。对应级别verbose,是 Android日志里面级别最低的一种。 Log.d() 用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比 verbose高一级。 Log.i() 用于打印一些比较重要的数据,这些数据应该是你非常想看到的、可 阅读详情

android中的对话框形式有四种,分别是一般对话框形式,列表对话框形式,单选按钮对话框,多选按钮对话框,下面我一一对他们进行详解。

<一>一般对话框

一般对话框形式如下图:

具体实现代码如下:

复制代码
 1 new AlertDialog.Builder(this)
 2                             .setTitle("删除")//设置标题
 3                             .setMessage("确定要删除指定的记录?")//设置提示消息
 4                             .setPositiveButton("确定",new DialogInterface.OnClickListener() {//设置确定的按键
 5                                 @Override
 6                                 public void onClick(DialogInterface dialog, int which) {
 7                                     //do something
 8                                 }
 9                             })
10                             .setNegativeButton("取消",new DialogInterface.OnClickListener() {//设置取消按键
11                                 @Override
12                                 public void onClick(DialogInterface dialog, int which) {
13                                     //do something
14                                 }
15                             })
16                             .setNeutralButton("忽略",new DialogInterface.OnClickListener() {//中立的,什么也不错
17                                 @Override
18                                 public void onClick(DialogInterface dialog, int which) {
19                                     //do something
20                                 }
21                             })
22                             .setCancelable(false)//设置按返回键是否响应返回,这是是不响应
23                             .show();//显示

复制代码

设置每一个Button按键时,都会传(CharSequence text, OnClickListener listener)参数,text是按键的文本,listener是一个DialogInterface.OnClickListener(),所以我们要创建这个对象并实现它的点击事件。在点击事件中有一个which参数不知道大家有没有注意,这个which实际上代表的是一个唯一的int型数值。像上面的setPositiveButton中的which代表的是-1,setNegativeButton中的which代表的是-3,setNeutralButton中的which代表的是-2.

所以在这里为了代码的简化,我们不再为每一个Button创建DialogInterface.OnClickListener()对象,而是只创建一个DialogInterface.OnClickListener()对象来分别实现它们的点击事件。具体实现代码如下:

复制代码
 1 DialogInterface.OnClickListener dialog = new DialogInterface.OnClickListener() {
 2                     public void onClick(DialogInterface dialog, int which) {
 3                         if(which == DialogInterface.BUTTON_POSITIVE){//确定按键的点击事件
 4                             Toast.makeText(MainActivity.this, "ok!", 1).show();
 5                         }
 6                         else if(which == DialogInterface.BUTTON_NEGATIVE){//取消按键的点击事件
 7                             Toast.makeText(MainActivity.this, "cancel", 1).show();
 8                         }
 9                         else if(which == DialogInterface.BUTTON_NEUTRAL){//忽略按键的点击事件
10                             Toast.makeText(MainActivity.this, "不知道", 1).show();
11                         }
12                     }
13                 };
复制代码
复制代码
1 //对话框
2                 new AlertDialog.Builder(this)
3                             .setTitle("删除")//设置标题
4                             .setMessage("确定要删除指定的记录?")//设置提示消息
5                             .setPositiveButton("确定",dialog)
6                             .setNegativeButton("取消",dialog)
7                             .setNeutralButton("忽略",dialog)
8                             .setCancelable(false)//设置按返回键是否响应返回,这是是不响应
9                             .show();//显示
复制代码

<二>列表对话框

懂得了上面的一般对话框的实现,那么下面的三种对话框就很容易实现了。列表对话框的实现效果如下图:

具体实现代码如下:

复制代码
 1 final String[] names = {"姚明","科比","詹姆斯"};//列表中显示的内容组成的数组
 2                 new AlertDialog.Builder(this)
 3                                 .setTitle("列表对话框")//对话框标题
 4                                 .setItems(names, new DialogInterface.OnClickListener() {//每一条的名称
 5                                     public void onClick(DialogInterface dialog, int which) {//响应点击事件
 6                                         Toast.makeText(MainActivity.this, names[which], 1).show();
 7                                     }
 8                                 })
 9                                 .setPositiveButton("确定", new DialogInterface.OnClickListener() {//响应确定键的点击事件
10                                     
11                                     @Override
12                                     public void onClick(DialogInterface dialog, int which) {
13                                         //do something
14                                     }
15                                 })
16                                 .show();
复制代码

在设置列表显示时我们用到了setItems,在setItems中有(CharSequence[] items, OnClickListener listener)这样的参数,其中第一个参数是列表显示中的每一个条目的名称的数组,第二个是点击一个列表显示条目时的响应事件,所以在这里我们可以事先定义好一个数组来存放要显示的列表名称。这样在用时就方便多了。在条件点击影响事件时我们要实现onclick事件,这里也有一个参数which,它在API中的解释为which The button that was clicked (e.g. DialogInterface.BUTTON1) or the position of the item clicked.它和上面的which一样,也是代表一个唯一的数值。它在这里代表的是自己定义的那个存放列表名称的数组的下标值,因此我们可以通过下标来访问数组中的数值。当然我们也可以在列表对话框中增加button,这样也是可以的,我们当然也可以为这个button做响应事件。这里我就不多说了。

<三>单选按钮对话框

单选按钮对话框的运行效果如下:

具体实现代码如下:

复制代码
 1 final String[] lang = {"NBA","英超","西甲"} ;
 2                 new AlertDialog.Builder(this)
 3                 .setTitle("单选按钮对话框")//标题
 4                 .setSingleChoiceItems(lang,0,new DialogInterface.OnClickListener() {//设置条目
 5                     public void onClick(DialogInterface dialog, int which) {//响应事件
 6                         // do something
 7                         //关闭对话框
 8                         dialog.dismiss();
 9                     }
10                 })
11                 .setPositiveButton("确定", new DialogInterface.OnClickListener() {
12                     
13                     @Override
14                     public void onClick(DialogInterface dialog, int which) {
15                         //do something
16                     }
17                 })//添加button并响应点击事件
18                 .show();
复制代码

在设置列表显示时我们用到了setSingleChoiceItems,在setSingleChoiceItems中有(CharSequence[] items, int checkedItem, OnClickListener listener)
这样的参数,其中第一个参数是列表显示中的每一个条目的名称的数组,第二个是默认让哪一个条目被选择上,如上面的代码,我让第一条被默认选上,所以我就在checkedItem这个参数这里写上第一条在数组中的下标值0,如果我默认都没被选上,我就在这里写上-1,第三个是点击一个列表显示条目时的响应事件,所以在这里我们可以事先定义好一个数组来存放要显示的列表名称。这样在用时就方便多了。在条件点击影响事件时我们要实现onclick事件,这里也有一个参数which,它在API中的解释为which The button that was clicked (e.g. DialogInterface.BUTTON1) or the position of the item clicked.它和上面的which一样,也是代表一个唯一的数值。它在这里代表的是自己定义的那个存放列表名称的数组的下标值,因此我们可以通过下标来访问数组中的数值。在点击完我们可以设置让这个对话框消失,这里可以用dialog.dismiss();让对话框消失。当然我们也可以在列表对话框中增加button,这样也是可以的,我们当然也可以为这个button做响应事件。这里我就不多说了。

<四>多选按钮对话框

多选按钮对话框的运行效果如下:

复制代码
 1 final String[] langs = { "NBA", "西甲", "英超" };
 2             final boolean[] selected = new boolean[] { true, false, true };// 一个存放Boolean值的数组
 3             new AlertDialog.Builder(this)
 4                     .setTitle("多选列表对话框")
 5                     // 标题
 6                     .setMultiChoiceItems(langs, selected,
 7                             new DialogInterface.OnMultiChoiceClickListener() {// 设置多选条目
 8                                 public void onClick(DialogInterface dialog,int which, boolean isChecked) {
 9                                     // do something
10                                 }
11                             })
12                     .setPositiveButton("确定",
13                             new DialogInterface.OnClickListener() {
14                                 public void onClick(DialogInterface dialog,
15                                         int which) {
16                                     // do something
17                                 }
18                             }).show();
复制代码

在多选按钮对话框中,我们用setMultiChoiceItems来设置多选按钮,这里setMultiChoiceItems中的参数为(CharSequence[] items, boolean[] checkedItems, OnMultiChoiceClickListener listener),第一个参数为要显示的条目的名称的数组,这里我们用一个String型的数组来存放,第二个是一个默认哪些按钮被选中的Boolean型数组,这里,我让下标为0和为2的条目默认被选中,当然,我们也可以事先定义好一个Boolean型数组。第三个参数就是点击多选按钮条目时的响应事件。在这个onClick事件中,同样有三个参数(DialogInterface dialog, int which, boolean isChecked),第一个参数代表的是这个对话框,第二个参数代表的是String数组中存放的数值的下标值。第三个参数代表的是Boolean数组中的boolean值。当然我们也可以在列表对话框中增加button,这样也是可以的,我们当然也可以为这个button做响应事件。这里我就不多说了。

以上就是Android中的四种对话框形式,在用的时候我们要学会灵活运用,不要局限于一种特定的形式,我们可以设计自己的对话框。不要被思想所束缚。

RK3568平台开发系列讲解(安卓篇)Android平台LOG Android Driver Log 1.Android C/C++ 层Log打印 Android log 打印等级: Verbose,Debug,Info,Warn,Error。 按打印等级分:ALOGV,ALOGD,ALOGI,ALOGW,ALOGE; Info、Warn、Error等级的Log禁止作为普通的调试信息使用 使用方式 包含头文件#include &lt;cutils/log.... 阅读详情

相关推荐

Windows10完美驱动Apple Studio Display全攻略:从雷电转接到亮度调节(附N卡兼容列表)

本文详细介绍了在Windows10系统下如何完美驱动Apple Studio Display显示器,包括雷电接口转接方案、BootCamp驱动安装及NVIDIA显卡兼容性测试。特别推荐GTX 1660 Super等显卡,提供5K@60Hz稳定输出,并分享色彩管理及日常使用技巧,帮助用户充分发挥这款苹果显示器的性能。

weixin_29284657的博客 1089

Android关于对话框,Android对话框(Dialog)完全使用手册

Dialog对话框是android常用的基础视图组件之一,本文总结了对话框常用的几种样式,以及自定义视图和带动画效果的对话框Dialog虽然可以显示到屏幕上,但是Dialog并非继承自View,而是继承自Object。Dialog的生命周期由Activity来控制,所以当Activity被销毁后,如果再有对Dialog的操作会导致异常:java.lang.IllegalArgumentExcept...

weixin_33164837的博客 1201

Zynq UltraScale+ RFSoC实战:用XCZU49DR开发板实现雷达信号处理全流程

本文详细介绍了如何利用Xilinx Zynq UltraScale+ RFSoC系列中的XCZU49DR开发板,高效实现雷达信号处理全流程。文章深入剖析了该芯片集成的射频直采ADC/DAC、可编程逻辑与Arm多核处理器的异构计算优势,并通过实战案例展示了从环境搭建、硬件链路设计到软件优化的完整开发路径,为相控阵雷达等高性能应用提供了单芯片解决方案。

weixin_29291863的博客 578

Android之dialog

android中的对话框形式有四种,分别是一般对话框形式,列表对话框形式,单选按钮对话框,多选按钮对话框,下面我一一对他们进行详解。 &lt;一&gt;一般对话框 一般对话框形式如下图: 具体实现代码如下: 1 new AlertDialog.Builder(this) 2 .setTitle("删除")//设置标题 3...

weixin_34014555的博客 89

RouterOS v7.6实战:5分钟搞定IPv6双栈配置(含光猫桥接避坑指南)

本文详细解析了在RouterOS v7.6系统中配置IPv6双栈网络的实战步骤,特别针对家庭网络光猫桥接模式下的常见问题提供了避坑指南。文章涵盖了从基础配置到企业级部署的进阶内容,包括IPv6前缀获取、DHCPv6客户端设置、路由通告以及安全优化,帮助用户充分利用v7.6版本在IPv6支持上的改进与优势。

embedding5hiker的博客 1282

Simulink中通过MEX与MinGW实现C/C++结构体变量的高效导入

本文详细介绍了在Simulink中通过MEX工具链与MinGW编译器,高效导入C/C++结构体变量的完整流程。文章从需求背景出发,逐步讲解了MinGW环境配置、.h文件编写规范、核心导入命令Simulink.importExternalCTypes的使用,以及如何在MATLAB Function模块和总线创建器中调用自定义结构体,旨在实现模型与代码的无缝对齐,为后续仿真和代码生成奠定坚实基础。

weixin_29056781的博客 343

安卓,为apk添加log输出(输出至手机存储卡FileLog目录下)

AndroidFileLog工具,可修改安卓应用。1、输出log至手机文件 2、屏蔽logcat查看log 1、修改应用,输出log信息至手机文件(使用修改后的apk,即可在运行时,在手机FileLog目录下查看运行的log信息) 2、修改应用,屏蔽logcat查看log (屏蔽后,在logcat工具上将无法查看到该应用的运行log信息) Androi...

暂无内容 3728

MPU6050 加速度计和陀螺仪传感器与 Arduino 的接口

虽然该模型并不能准确代表现实世界中加速度计传感器的构建方式,但它通常有助于理解为什么加速度计的输出信号通常以 ±g 为单位指定,或者为什么加速度计在静止时在 z 轴上的读数为 1g,或者在不同方向上您可以期望得到什么样的加速度计读数。该模块的核心是低功耗、低成本的 6 轴运动跟踪芯片 MPU6050,它将 3 轴陀螺仪、3 轴加速度计和数字运动处理器 (DMP) 集成到一个 4mm x 4mm 的微型芯片中。小时候,科学博览会上的陀螺仪总是让我们感到惊讶,因为它们以奇怪的方式移动,甚至似乎违背了重力。

sxstj的博客 9933

关于安卓调试的log系统

在安卓系统下,对应用程序的调试,有一个特有的方式,就是log系统,其实就和C语言中的printf函数的使用类似,但是,它是将调试信息存入了缓冲区内,而安卓有四个缓冲区,他的设计模式是模仿了linux内核中的缓冲区模式,将所有的调试信息放入缓冲区内循环打印。所以加上linux中的缓冲区,安卓是有5个缓冲区。安卓中打印缓冲区的指令是logcat,linux内核中使用printk函数,然后用dmesg可以查看。 安卓的四个缓冲区分别是main(主缓冲区)、system(后台服务)、radio(无线、上网、电话)、

菊花的博客 779

R语言实战:5分钟搞定相加交互效应分析(逻辑回归/Cox回归/GLMM/GEE全支持)

本文详细介绍了如何利用R语言中的`scitable`包快速实现相加交互效应分析,支持逻辑回归、Cox回归、GLMM和GEE等多种模型。通过自动化计算RERI、AP和SI等指标,大幅提升临床研究和流行病学分析的效率与准确性,特别适合处理多因素联合作用的复杂场景。

fanta的博客 671

C# MES通信从入门到精通(1)——串口传输文件

本文详细介绍了在Mes通信领域如何使用串口发送文件,由实战经验总结,堪称MES通信领域的葵花宝典!

qq_34059233的博客 3750

安卓P 编译报找不到这个文件 cutils/log.h

安卓P 编译报 找不到这个文件 cutils/log.h 一个工具的源码在安卓8上能编译通过,但是在安卓P上却编译失败,报找不到这个头文件 cutils/log.h, 一开始我以为是安卓P源码根目录没有这个头文件,然后我就在安卓源码根目录,find -name log.h 然后发现有这个文件,/system/core/libcutils/include/cutils/l

weixin_44794688的博客 1722

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android中log知识总结

android中的log有很多级别,合理的控制log可以提高的解决问题的效率,减少工作量1. log输出级别 android中的log级别如下 ANDROID_LOG_UNKNOWN, ANDROID_LOG_DEFAULT, ANDROID_LOG_VERBOSE, ANDROID_LOG_DEBUG, ANDROID_LOG_INFO, ...

runningsword的专栏 1206

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

安卓的LOG

在Android群里,经常会有人问我,Android Log是怎么用的,今天我就把从网上以及SDK里东拼西凑过来,让大家先一睹为快,希望对大家入门Android Log有一定的帮助. android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log...

201

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【Unity调用原生安卓】1.入门篇 ——实现原生安卓Log

前言 在安卓LogCat调试时,只调用一次Unity的Debug.Log,打印结果是打印一行出一大堆,看得是不是心烦意乱 直接上代码 public static void AndroidLogI(string msg, string tag = "Unity Tag I") { AndroidJavaClass Jav...

yhx956058885的博客 694

[Unity][Android]安卓手机设备调试编辑器中显示Debug.Log结果

安卓手机设备调试在Unity编辑器中显示Debug.Log的结果 前提是 ADB安卓手机真机调试 是正常的,File-BuildSettings-Android-AutoconnectProfiler 和DeepProfiling Support勾选 在连接ADB服务后,手机提示 安装 未知APP,成功安装 未知APP,在Unity编辑器 中,打开Profiler视图,把Playmode选择为 安卓手机设备。 在Profiler视图显示性能。 在Console视图显示 Debug...

BuladeMian的博客,菜得抠脚,菜得真实 1719

在Android的源码中添加LOG

<br />想在Opencore代码中添加打印信息,但是使用OpenCore自带的PVLOGGER,有一定的局限,因为只能在创建对象调用相应的ThreadLogon()后才能使用。所以不能实现在任何函数中添加。于是通过添加Log.h的方法来添加。<br />首先转下别人的经验(http://blog.163.com/binghaitao@126/blog/static/3383532520099309366435/)<br />我试了下还是出先undefined reference to `__androi

ccskyer的专栏 6352

安卓Log

(3)Log.i:这里的i代表information,为一般提示性的消息,对应的log等级为INFO。采用该等级的log,不会输出VERBOSE和DEBUG信息,只会输出剩余3个等级的信息。该级别的log,只会输出该级别信息。(2)Log.d:这里的d代表Debug调试的意思,对应的log等级为DEBUG。采用该等级的log,除了VERBOSE级别的log外,剩余的4个等级的log都会被输出。(1)Log.v:这里的v代表Verbose啰嗦的意思,对应的log等级为VERVOSE。

lcannal的博客 722

【安卓平台so打印log】Unity 调用so文件并打印Log(C语言中打印log到android控制台)

目录 一、引入log库 二、C代码中引入头文件 三、打印日志的代码(跟C语言中printf的使用方式一样) 四、给jni日志添加开关 一、引入log库 1.如果是使用android.mk的方式手动生成so库,在android.mk的配置文件中加入配置: LOCAL_LDLIBS += -llog 2.如果是使用构建脚本的方式生成so库,需要在build.gradle文件的ndk闭包中配置: defaultConfig { applicati.

yhx956058885的博客 1924

Android的log机制,安卓开发项目经历

感觉现在好多人都在说什么安卓快凉了,工作越来越难找了。又是说什么程序员中年危机啥的,为啥我这年近30的老农根本没有这种感觉,反倒觉得那些贩卖焦虑的都是瞎j8扯谈。当然,职业危机意识确实是要有的,但根本没到那种草木皆兵的地步好吗?Android凉了都是弱者的借口和说辞。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。

2401_84152845的博客 959

Log安卓开发中常用的优秀日志工具

Log安卓开发中常用的优秀日志工具

bobo89455100的博客 1554

安卓 log 的用法

今天我就把从网上以及SDK里东拼西凑过来,让大家先一睹为快,希望对大家入门AndroidLog有一定的帮助. android.util.Log常用的方法有以下5个:Log.v()Log.d() Log.i() Log.w() 以及 Log.e()。根据首字母对应VERBOSE,DEBUG,INFO,WARN,ERROR。 1、Log.v的调试颜色为黑色的,任何消息都会输出,这里的v代表ve

dahuzi的专栏 996

Android Log系统介绍

Android开发人员经常会遇到这样那样的问题,需要借助日志分析来解决。Bug日志有助于在开发阶段识别Android应用中的Bug。一旦应用发布到市场上,开发者(或者支持工程师)也要通过分析bug日志来解决问题。可见,日志系统在开发过程中非常重要。Android使用的是一个集中式日志系统来记录所有的日志,应用开发者可以编写自定义日志,也可以定义日志过滤器,来打印关键日志信息来反馈程序运行状况。

u012873121的博客 4272

Android Log原理分析

在android开发的过程中,需要查看log信息来帮助分析。那么知晓log的原理就是比较重要的了。 Framework 中的Log Framework中的Log比较简单,主要就是封装接口,在接口中调用println_native函数。下面只以其中的一个进行分析。 public static int v(String tag, String msg) { if (tag == null) { ...

li_liuliu的博客 2831
上一篇: apache ftp
下一篇: SAX,功能强大的 API
lb8607
博客等级 码龄18年 17粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值