static void main(String[] args) { A a = new A(); B b = new B(); } } 问题:为什么创建A对象的时候父类会调用子类方法...但是:创建B对象父类会调用父类的方法? 答案: 当子类被加载到内存方法区后,会继续加载父类到内存中。...如果,子类重写了父类的方法,子类的方法引用会指向子类的方法,否则子类的方法引用会指向父类的方法引用。 如果子类重载了父类方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载父类方法,则方法引用会指向父类方法。 当子类对象创建时,会先行调用父类的构造方法(构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...但是:由于java语言是静态多分派,动态单分派。其结果是当编译的时候,父类构造方法调用的方法的参数已经强制转换为符合父类方法的参数了。 上边代码在编译前已经转换为下面这个样子的了。
本文将详细的讲解如何在android studio中,对Android程序进行调试以及DDMS工具的使用。...一、 使用 Log 类来输出日志信息 Android SDK中提供了Log类来获取程序运行时的日志信息,该类在android.util包中,它继承了java.lang.Object类。...在 Android Studio中,可以在Android编辑器中单击显示代码行号的位置,就可以添加或者删除当前行的断点,如下图所示: 2.2 简单调试 为程序设置断点后,单击工具栏的Debug按钮...,或者右击代码区域,选择Debug MainActivity.java,将在Android Studio 的底部显示调试面板,查看到当前相关变量的值,如下图所示: 在调试面板中,可以通过工具栏上的按钮执行相应的调试操作...2.6 停止调试 在工具栏中单击停止按钮,即红色的正方形: ,会停止程序的调试。需要注意的是,该操作不回停止程序的运行,而是会跳过所有的调试。
菜单Menu Android的菜单分为两类:选项菜单和上下文菜单,默认使用选项菜单。...展示选项菜单的途径有三种: 1、按下菜单键; 2、在代码中手动打开选项菜单,即调用函数openOptionsMenu; 3、按下导航栏右侧溢出菜单按钮,溢出菜单参见《Android开发笔记(二十)...如为true则弹窗以外区域不可点击,如为false则弹窗以外区域可以点击。 setBackgroundDrawable : 设置弹窗的背景。...setAnimationStyle : 设置弹窗弹出和缩回时的动画样式。 isShowing : 判断弹窗是否在展示中。 showAtLocation : 让弹窗在上级视图中的绝对坐标中展现。...2、弹窗在弹出和消失时显示伸缩动画; 调用setAnimationStyle方法设置动画样式,该样式在styles.xml中定义,其中"android:windowEnterAnimation"项定义的是展示弹窗时的动画
2).当事件发生时,系统会将事件封装成相应类型的事件对象 ? 3).当监听器对象接收到事件对象之后,系统调用监听器中相应的事件处理来处理事件 ?...:焦点改变事件的事件监听器必须实现的接口 View.OnKeyListener:按钮事件的事件监听器必须实现的接口 View.OnLongClickListener:长单击事件的事件监听器必须要实现接口...View.OnTouchListener:触摸事件的事件监听器必须要实现的接口 与普通java方法调用不同的是:普通java程序里的方法是由程序主动调用的,而事件处理中的初见处理器方法是由系统负责调用的...点击按钮后: ? 2.3外部类形式作为事件监听器类 布局界面如下 ? MainActivity.java主要代码如下 ?...MessageQueue,而Handler会不断的从MessageQueue中获取并处理消息-这将导致Handler中的处理消息的方法被回调 下面一个实例演示如何在界面中修改界面的组件,循环播放相册中的照片
在布局文件中添加按钮点击事件 在java文件中添加按钮点击事件 为多个按钮添加点击事件 按钮按下、释放事件 按钮长按事件 按钮长按时过滤掉单击事件 按钮双击事件 按钮双击时过滤掉单击事件 在布局文件中添加按钮点击事件...2、在对应的.java文件中添加名为showMsg的方法 此方法需满足以下条件: 与xml布局文件中名称一致 是public函数 无返回值(void 类型) 参数唯一(为View类型,代表被点击的视图...为多个按钮添加点击事件 处理多个按钮的点击事件时,可以使用上面的方式为每个按钮分别绑定事件监听器,也可以使用下面的方式定义一个实现监听器的类,当然,下面的方式结构更加清晰。...,因为按钮双击时仍然会先触发单击事件。如果只需要处理双击事件的话则不需考虑这一点,如果要在同一个按钮单击或双击时处理不同的内容,则需在双击时过滤掉单击事件。...按钮双击时过滤掉单击事件 双击时过滤单击事件的思路可参考以前在Qt中的应用(QML之MouseArea双击时过滤掉单击事件):在按钮点击时开启定时器,判断300ms内有没有第二次点击,有的话表示双击,
我们把LogCat中的信息清除,单击“开启服务”按钮: ? 我们看到,MyService 类中的 onCreate 方法和 onStartCommand 方法分别调用了一次。...我们可以看到,即使我们单击了两次“开启服务”按钮, MyService 中的 onCreate 方法仍然没有被调用。...那么怎么解决呢,还记得MyService 类中的 onBind 方法吗,我们之前说过,这个方法当当前服务和 Activity 绑定的时候会调用。...中我们新建了一个 ServiceConnection 匿名类对象,这个对象中的 onServiceConnected 方法在服务和当前 Activity 绑定成功的时候会被调用。...Nice,成功的显示出了绑定服务的 Toast 提示信息,并且LogCat 中的显示也证明 MyService 类中的 onBind 方法确实调用了。那么下面我们单击“解绑服务”按钮: ?
IDA Pro解析得出,该文件属于Android DEX File。保持默认的选项设置,单击“OK”按钮,稍等片刻,IDA Pro就会完成对DEX文件的分析。...IDA Pro能够智能识别Android SDK的API函数,并使用imp关键字将其标识出来。例如,第1行中的invoke-super指令的后半部分如下。...例如,我们知道Crackme0502程序的主Activity类为MainActivity,在“Exports”选项卡中输入“Main”,代码会自动定位以“Main”开头的行(由此可以粗略判断每个方法的作用...程序运行后,会出现两个按钮,单击“获取注解”按钮会以Toast方式弹出三条信息。在文本框中输入任意字符串,单击“检测注册码”按钮,程序会弹出注册码错误的提示信息。...前者调用了MainActivity.access$000() 方法,在IDA Pro的反汇编界面双击MainActivity_access,可以看到它其实调用了MainActivity的getAnnotations
这样看似不是按钮的组件也可以使用这些监听。...内部类作为事件监听器: 在MainActivity中定义内部类,在内部类中覆盖接口,然后在setOnClickListener参数表中创建这个类。...匿名内部类作为事件监听器: 原理和上面一个方法相同,但是可以用Java的语法简化,参照Java匿名内部类。...直接绑定到标签: 这是单击事件独有的方法,在xml中为组件绑定事件处理方法 android:onClick=“clickName” 然后直接在类中声明方法:public void clickName(...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
:text="传送自定义对象数据"/> 一个简单的布局:三个按钮竖向居中布局对应传输三种数据事件 接下来是MainActivity,java: import android.os.Bundle...第三个方法sendObjectData中的Book类就是实现了serializable接口,之后通过intent的putExtra方法的重载实现的传递,我们来看一下Book.java: package...单击“传送文本数据”按钮: ? 成功的显示,单击返回后再单击“传送图片数据”按钮: ? good,图片成功的显示,再单击返回后单击“传送自定义数据”按钮: ?...答案当然是有的,我们可以尝试一下 在MainActivity.java新建一个按钮用于实验传输大数据,并且在MainActivity.java中新建一个方法sendBigData: private...单击“传送大数据”按钮,并不会启动SecondActivity,我们打开LogCat: ? !!!
主要是一些Java中的文件操作,如果不熟悉的话可以去网上找一些教程。在 onDestroy 方法中调用 saveText 来储存 EditText 中的数据。...2、Activity类中的getPreferences方法,此方法接受一个参数:操作模式(MODE_PRIVATE),储存的文件名为当前Activity对象的类名 3、PreferenceManager...类中的静态方法:getDefaultSharedPreferences,此方法接收一个Context类型的参数。...} } } 主要的思想还是通过两个自定义方法实现:login() 方法用于单击“登录”按钮时对用户名和密码等信息的储存,loadUserInfo() 方法用于恢复用户名和密码等操作...如果你是第一次运行程序,那么你的界面应该是这样的。输入账户和密码,单击记住密码: ? 点击登录按钮。然后完全退出程序,再次启动程序: ?
首先,我们的Activity对象在我们在Android工程的AndroidManifest.xml配置文件中注册,之后才可以被我们的程序使用,而在我们注册Activity时,有一个launchMode属性是可以赋值的...运行程序,在LogCat新建一个信息查看器,by Log Tag属性设置为MainActivity(和MainActivity中的String类型的常量TAG相同),用于查看LogCat中打印的MainActivity...的onCreate方法调用,并且MainActivity处于活动栈栈顶(这绝对是当然的),然后单击按钮两次,我们在Android模拟器中可以看到MainActivity又被创建了两次,而此时的LogCat...启动SecondActivity”按钮进入SecondActivity之后再次单击“启动SecondActivity”按钮,之后再单击“启动MainActivity”按钮: ?...结果显而易见,如我们所愿,单击“启动MainActivity”按钮之后,之前在MainActivity上面的两个SecondActivity被系统回收(调用onDestroy方法),自然MainActivity
那么接下来是MainActivity.java: import java.io.File; import android.net.Uri; import android.os.Bundle; import...言归正传,这个广播干什么用的呢:在自定义通知布局中我们要对两个按钮进行事件处理,在自定义通知布局中,我们必须使用RemoteViews的对象来对布局文件中的两个按钮进行事件处理,而 RemoteViews...这样的话思路就清晰了,我们这里通过一个Broadcast来处理按钮单击事件,因此我们需要使用BroadcastReceiver对象来接收广播,那么接下来是MyBroadcastReceiver.java...单击“发送第一种通知”按钮: ? 单击这个通知: ? 接下来单击“发送第二种通知”按钮: ? 这里图片是随便找的,不太美观,大家多多谅解。...分别单击通知中的两个按钮: ? ? Nice,我们成功的自定义了属于我们自己的通知 如果博客中有什么不正确的地方,还请多多指点 谢谢观看。。。
新建一个Android工程: 在Src文件夹下新建一个包com.example.databaseHelper: 在这个包中创建两个类,首先我们来看第一个类DatabaseStatic.java:...; /* * 在这个类的构造函数里面我们调用了父类的构造方法用来创建数据库文 * 件,第二个构造方法只是为了方便构造(不用些那么多的参数) * 这个类继承了 SQLiteOpenHelper...里面主要是实现了5个按钮对应的操作 SQLiteDatabase 类里面提供了对数据库表格进行插入、更新、删除、查询 的对应API,用于给对SQL语句不熟悉的开发者使用,当然我们还可以调用这个类里面的...我们可以看到我们确实在book这张表中成功的插入了一条新的数据。 接下来单击“更新数据”按钮: ?...使用 “select * from”语句查询表中的所有数据,并没有看到有数据,我们再单击一下“显示数据库中book表中的所有数据”按钮: ?
通过上面的官方介绍,我们可以看到,View 是我们平常看到的视图上所有元素的父类,按钮Button、文本TextView、图片ImageView 等。...MainActivity: vX = 645.7418, vY = 322.51065 MainActivity: vX = 810.2783, vY = 270.19778 当然最后,在不用的时候记得调用以下代码重置并回收掉...在构造函数中创建 通过 gestureDetector = new GestureDetector(context, this) 创建 GestureDetector, 然后实现 GestureDetector.OnGestureListener...onSingleTapConfirmed 严格的单击行为,onSingleTapUp之后只能是onSingleTapConfirmed 或 onDoubleTap 中 的一个 OnDoubleTapListener...方法进行滑动时,滑动时瞬间完成的,没有过渡效果使得用户体验不好,这个时候就可以使用 Scroler 来解决这一用户体验差的问题。
该程序的界面布局很简单,界面中只有一个按钮,用户单击该按钮将会启动第二个Activity。此处不再给出该程序的界面布局文件。...()); }} 运行上面的程序,通过第一个Activity中的按钮进入第二个Activity中,将可以看到下图所示的界面。...下面通过一个简单的示例来示范Action属性(就是普通字符串)的作用。下面程序的第一个Activity非常简单,它只包括一个普通按钮,当用户单击该按钮时,程序会“跳转”到第二个Activity。...运行上面的程序,单击程序中的“启动指定 Action、默认Category对应的Activity”按钮,将看到下图所示界面。 ?...运行上面的程序,单击程序中的“启动指定Action、指定 Category对应的Activity”按钮,将看到下图所示的界面。 ?
其创建方式有两种 用java代码创建 在XML文件中定义 第一种方法: import android.graphics.Color; import android.support.v7.app.AppCompatActivity...下面介绍如何在XML中定义选项菜单: 要在XML文件中定义菜单,首先需要在资源文件中创建一个名为menu的文件夹; 然后再在其中创建xml文件: ?...如上图所示的带有标题和两个按钮的叫做ActionBar。是从安卓3.0开始被介绍使用的。系统默认使用ActionBar作为工具栏。ActionBar中的item可以显示为两种——按钮和溢出菜单。...如下图,两个图标代表的是按钮,三个竖点代表的是溢出菜单: ? 言归正传,关于showAsAction的值: 当为ifRoom时,表示如果有空间,就显示。...如上面的代码中两个都定义为IfRoom,则会显示为两个按钮。 “never”,顾名思义,就是不显示按钮。全部浓缩在溢出菜单中。 “withText”也就是显示按钮时跟随文字。
为此,请单击下图所示屏幕上的“下一步”按钮。 现在,从选项中选择 Empty Activity 模板,然后单击 Next 按钮。 单击完成按钮。...文件 在 java 文件夹中,转到包中的 MainActivity.java 文件并编写以下代码。...这里给出了按钮的“id”,然后设置了 Click Listener。单击此“单击我”按钮后,我们会看到一个祝酒词(一条显示“按钮已单击!”的短消息)。...因此,将您的 android 设备连接到您的电脑,然后单击工具栏上的运行选项。 您将找到以下对话框。 选择您已连接的设备,然后单击“确定”按钮。 现在,让 Gradle 构建完成。...之后,您会看到您的第一个应用程序在您的 Android 设备上启动。 以下是启动应用程序的屏幕截图。 当您单击“CLICK ME”按钮时,会出现提示。 总结 很棒!
actionBar; //定义V7包下的ActionBar 接着,编写按钮的单击事件相应函数: View.OnClickListener l = new View.OnClickListener()...代码,赋予按钮刚刚写的单击事件。...:icon是没被隐藏时显示的图标 如果只有android:title,但没有android:icon,被强制显示,Action Bar会显示文字,如下图所示: 如果只有android:icon,但没有...app:showAsAction="always"> 在 Action Bar 上添加组件,如搜索框, 单击后,会显示搜索栏: 注意4:app:actionLayout 指的是通过Layout...} 四、实现界面返回按钮 效果: 首先给第一个界面的按钮添加单击事件相应,使其跳转到第二个界面 @Override public void onClick(View v) { Intent intent
在使用手机时,当有未接来电或者是新短消息时,手机会给出相应的提示信息,这些提示信息通常会显示到手机屏幕的状态栏上。...Android也提供了用于处理此类信息的类,他们是Notification和NotificationManager。...(1)调用getSystemService()方法获取系统的NotificationManager服务。...();//清除全部通知 } }); } } 运行本实例,单击”显示通知”按钮,在屏幕的左上角将显示第一个通知,如图-4.2.2.a.jpg所示,过一段时间后,该通知消失,并显示第二个通知...,如图-4.2.2.d.jpg所示,查看后,该通知的图标将不在状态栏中显示。
可以用来处理用户的常见操作,如点击、双击、长按事件等,这种状态称为运行状态,也叫活动状态。...其中第一个Activity的界面布局非常简单,只包含2个按钮,其中第一个按钮的作用主要是启动第二个Activity,第二个按钮的作用是退出当前Activity。...="wrap_content" android:text="这是第二个Activity"/> 第一个MainActivity类主要用于重写Activity...接下来单击第一个按钮启动第二个Activity。...单击退出Activity按钮,MainActivity将会结束自己,并且可以在LogCat 窗口看到如下图所示的输出: ? 从该示例可以看到,各生命周期方法的调用完全符合前面所讲。
领取专属 10元无门槛券
手把手带您无忧上云