在应用中能看到的东西都是放在活动中的。活动是安卓开发比较重要的东西,是用户交互和数据的入口。本篇博客要介绍的内容是活动的创建,活动的跳转与值的透传。...在新的按钮中点击Back返回到上一个Activity中。...下方是添加了一个Button, 并且Button上的Text为ShowToast(Toast是安卓中显示信息用的组件)。 ?...Activity按钮就会跳转到第二个Activity,并且把第一个页面中传的值会在第二个Activity中进行显示。...在iOS也是这样,不过是通过Application对象打开某些协议如tel://拨号协议等来调用系统功能。在安卓系统中也可以通过Intent对象来做这些操作。
public void onClick(View v) { finish(); } }); } } 三:利用Intent实现下一活动向上一活动传值...Activity中有一个startActivityForResult()方法,这个方法期望在活动销毁的时候能够返回一个结果给上一活动。...Intent的实例,第二个参数是requestCode。...resultCode在onActivityResult(int requestCode, int resultCode, Intent data)方法中出现。...*/ //2)重新覆写方法onActivityResult() @Override protected void onActivityResult(int requestCode, int resultCode
startActivityForResult()方法接收两个参数,第一个参数还是Intent,第二个参数是请求码,用于在之后的回调中判断数据的来源。...setResult()方法接收两个参数,第一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK或RESULT_CANCELED这两个值,第二个参数则把带有数据的Intent传递回去,然后调用了...onActivityResult()方法带有三个参数: 第一个参数requestCode,即我们在启动活动时传入的请求码。 第二个参数resultCode,即我们在返回数据时传入的处理结果。...重新运行程序,在FirstActivity的界面点击按钮会打开SecondActivity,然后在SecondActivity界面点击Button 2按钮会回到FirstActivity ?...这时候你可能会问,如果用户在SecondActivity中并不是通过点击按钮,而是通过按下Back键回到FirstActivity,这样数据不就没法返回了吗?
隐式意图和显式意图: 显式意图:显式意图明确指明了启动活动的上下文和想要启动的目标活动,显式意图明确指定了Intent应该传递给哪个组件。 隐式意图:没有明确指定组件名的Intent为隐式意图。...activity回传数据给第一个activity 实验要求:编程实现具有“登录”按钮的主界面,点击“登录”按钮后打开另一个新的Activity,在新打开的Activity中输入的用户名、密码等个人信息,...requestCode int:如果>=0,则当活动退出时,此代码将在onActivityResult()中返回。...如果活动显式返回,则不会返回任何结果,或者在操作期间崩溃,resultCode将为RESULT_CANCELED。 当您的活动重新启动时,您将在onResume()之前立即收到此调用。...由于在一个活动中有可能调用startActivityForResult()方法去启动很多不同的活动,每一个活动返回的数据都会回调到onActivityResult()这个方法中,因此我们首先要做的就是通过
的用法) - 落日小屋 - 博客频道 - CSDN.NET 在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,...requestCode 和 resultCode都是返回提出请求的MainActivity结果处理函数onActivityResult()使用的标识,其中requestCode 是我们在启动活动时传入的请求码....class); startActivityForResult(Intent intent, int requestCode); 第一个参数:一个Intent对象 第二个参数:如果> = 0,...setResult(int resultCode, Intent data) 调用这个方法把Activity想要返回的数据返回到父Activity 第一个参数:当Activity结束时resultCode...onActivityResult(int requestCode, int resultCode, Intent data) 第一个参数:这个整数requestCode提供给onActivityResult
向下一个活动传递数据 Intent不仅可以用来启动活动,还可以在启动活动的时候传递数据。...返回数据给上一个活动 Activity中还有一个StartActivityForResult()方法也是用于启动活动的, 但这个方法期望在活动被销毁的时候能够返回一个结果给上一个活动。...StartActivityForResult()接收两个参数, 第一个参数还是Intent, 第二个参数是请求码,用于在回调中判断数据的来源。...()方法带有三个参数, 第一个参数requestCode,即我们启动活动的时候传入的请求码, 第二个参数resultCode,即我们返回数据时传入的处理结果, 第三个参数data,即携带着返回数据的Intent...由于在一个活动中有可能调用startActivityForResult()方法启动很多不同的活动, 每一个活动返回的数据都会回调onActivityResult()方法,因此需要先判断requestCode
Forwarding 和 ForwardTarget,由于第二个活动没有 intent-filter,因此在程序中只能由第一个活动来启动。...> cls) 第一个参数是当前的上下文类型 Context,因此把当前的活动设置过去即可(Activity 本身继承了 Context),第二个是 Intent 所包含的 JAVA 类,直接设置 ForwardTarget.class...本例中使用了 finish()函数表示当前的活动结束,这样在第二个活动(ForwardTarget)启动时,第一个活动(Forward)已经不存在了。...如果没有调用 finish()函数,第二个活动启动时,第一个活动就处于 OnPause 状态,当第二个活动退出后,第一个活动重新出现,也就是会调用活动的 onResume()函数。...初始化界面如图所示,点击“Get Result”按钮将跳转到第二个屏幕,如中图所示;在第二个屏幕中点击“Corky”和“Violet”按钮将返回第一个屏幕,并获得对应显示,如右图所示。
Intent的get方法取出对应名字的数据,一般get方法有两个参数,第一个是字符串,是我们查找对应参数的标准,第二个参数是如果没有对应的值则取得默认值。...如果要返回数据给上一个活动,则用startActivityForResult()方法来启动费另一个活动,该方法接收两个参数,第一个是Intent,第二个是请求码,用于在之后的回调中判断数据的来源,该请求码只要是一个唯一值就可以了...onActivityResult()方法,因此我们还需要在第一个活动中重写onActivityResult()方法,在该方法中我们对返回的数据和结果进行处理。...每当我们开启一个新的活动,它会在返回栈中入栈,并处于栈顶的位置;而每当我们按下Back键或调用finish()方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动就会重新回到栈顶的位置。...每次启动活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。
Override protected void onRestart() { super.onRestart(); Log.i("MainActivity--->","onRestart"); } } 第二个页面代码相差无几...逻辑层面的可见状态) I/SecondActivity--->: onResume(SecondActivity页面运行中) I/MainActivity--->: onStop(上一个页面进入停止状态) 3,返回到...为什么MainActivity跳转到另一个页面仅仅只进入了onStop()状态却没有被onDestroy(),在这我们需要说明一个安卓的回退栈的问题。...——>onDestroy 最后一个特殊情况再测试点击手机HOME键: 绝大多数的教程内均写的是点击HOME键任务进入后台,活动onStop()被保存,但是我在真机测试时并不是这样 I/MainActivity...--->: onPause I/MainActivity--->: onStop I/MainActivity--->: onDestroy 我的设备是魅族MX4,安卓5.1的系统,个人猜想可能是安卓版本不同所导致的
启动活动选择完照片后就会返回一个intent到onActivityResult方法中,所以接下来的主要工作就是如果获取到返回的路径。...我们知道在安卓4.4以后是不能把文件的真实路径直接给别的应用的,所以返回的uri是经过封装的,所以我们要进行解析取出里面的路径。...所以这里我们要进行判断安卓版本来进行不同的逻辑,先看代码: @Override protected void onActivityResult(int requestCode, int resultCode..., @Nullable Intent data) { if (requestCode == 2){ //判断安卓版本 if (resultCode == RESULT_OK&&data!...if (Build.VERSION.SDK_INT>=19) handImage(data); else handImageLow(data); } } } //安卓版本大于
image 安装完成后,查看一下 NDK 的版本,记得勾选右下脚的 “Show Package Detail”。 image 如果 NDK 没有安装为指定的版本,那请先勾选对的版本后,再下载安装。...image 在 “项目设置” 中找到 “平台” 选项,然后配置 “Android”,将这俩个栏目都设置为同意,接受SDK证书,以及填上安卓包名称。...回到我们的 C++ 代码中的按钮点击事件中,加入如下代码。..., FJavaWrapper::GameActivityThis,GetPackageNameMethodID); } #endif } 由于我们的 C++ 代码被修改过了,所以需要重新打包安卓项目...C++ 调用 Java 代码已经成功实现了,但是在上文中,我们新建的一个第三方库的内容还没有讲完,那就继续来讲如何去调用安卓第三方库中的函数方法。
启动活动选择完照片后就会返回一个intent到onActivityResult方法中,所以接下来的主要工作就是如果获取到返回的路径。...我们知道在安卓4.4以后是不能把文件的真实路径直接给别的应用的,所以返回的uri是经过封装的,所以我们要进行解析取出里面的路径。...所以这里我们要进行判断安卓版本来进行不同的逻辑,先看代码: @Override protected void onActivityResult(int requestCode, int resultCode..., @Nullable Intent data) { if (requestCode == 2){ //判断安卓版本 if (resultCode == RESULT_OK&&data!...if (Build.VERSION.SDK_INT>=19) handImage(data); else handImageLow(data); } } } //安卓版本大于
第一个页面布局(xml编写) 2. 第二个页面布局(java编写) 3....页面跳转实现 实现步骤: ①:编写第一个页面(文本+按钮) xml编写 ②:编写第二个页面(文本) java 编写 ③:给按钮添加一个跳转 设计思路: 第一步:在第一个界面中把HelloWorld...第二步:写第二个界面 第三步:书写跳转关系 鸿蒙UI中,提供了两种编写布局的方式: 在XML中声明UI布局 在代码中创建布局 这两种方式创建出的布局没有本质差别,但是XML方式较为方便简单,以后开发中...相当于 安卓中的 wrap_content 第二个页面布局(java编写) java 代码编写 创建 : ? ? ? ? ? 删除 layout 下的ability_second.xml 注释掉报错的这段: ?
新建一个ActivityCollecter类做为活动管理器 public class ActivityCollector { public static List activities...super.onSaveInstanceState(outState); String tempData = "丢失的数据"; outState.putString("maple",tempData);//第一个参数是键值...,第二个参数是需要保存的数据 } @Override protected void onActivityResult(int requestCode, int resultCode...savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second...你还可以在销毁所有活动后的代码后面再加上 android.os.Process.killProcess(android.os.Process.myPid());其中killProcess()方法用于杀掉一个进程
这个构造函数接收两个参数: 第一个参数Context 要求提供一个启动活动的上下文 第二个参数Class 则是指定想要启动的目标活动,通过这个构造函数就可以构建出Intent 的“意图”。 ...注意这里putExtra()方法接收两个参数: 第一个参数是键,用于后面从Intent中取值 第二个参数才是真正要传递的数据。 ...startActivityForResult()方法接收两个参数: 第一个参数还是Intent 第二个参数是请求码,用于在之后的回调中判断数据的来源。...setResult()方法接收两个参数,第一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK 或RESULT_CANCELED 这两个值,第二个参数则把带有数据的Intent传递回去,然后调用了...()方法带有三个参数,第一个参数requestCode ,即我们在启动活动时传入的请求码。
所以Anko库提供了另一种符合习惯的写法,也就是利用Pair类把参数名和参数值进行配对,Pair的第一个参数为字段名,第二个参数为字段值。...收到请求消息:\n请求时间为${request_time}\n请求内容为${request_content}" } } 下面通过测试界面观察一下消息数据发送之前和发送之后的效果,如下面左图所示,这时第一个页面准备跳转到第二个页面...;如下面右图所示,这是跳转后的第二个页面,界面上展示了第一个页面传递过来的参数信息。...,表示增加安卓插件的编译支持: //@Parcelize标记需要设置experimental = true androidExtensions { experimental = true } 编译文件修改完毕...;如下面右图所示,这是跳转后的第二个页面,界面上展示了第一个页面传递过来的序列化数据。
02暂停状态(Paused) 在某些情况下,Activity对用户来说仍然是可见的,但它不再拥有焦点,即用户对它的操作是没有实际意义的。...其中第一个Activity的界面布局非常简单,只包含2个按钮,其中第一个按钮的作用主要是启动第二个Activity,第二个按钮的作用是退出当前Activity。...在第二个Activity中同样实现Activity生命周期中的方法,在每个方法中打印Log信息。...接下来单击第一个按钮启动第二个Activity。...现在再观察一下从第二个Activity按返回键回到第一个Activity生命周期的LogCat 信息,如下图所示: ?
3、targetSDKVersion = 6.0 :安装时默认获得权限,但是用户可以在安装App完成后动态取消授权( 取消时手机会弹出提醒,告诉用户这个是为旧版手机打造的应用..., READ_CALL_LOG , WRITE_CALL_LOG , ADD_VOICEMAIL(添加语音信箱) , USE_SIP(使用SIP协议 , PROCESS_OUTGOING_CALLS(...(第一次安装后请求权限前调用):false 1、曾经被拒绝过权限后再调用:true 2、曾经被拒绝过权限且不再询问后再调用:false 3、系统不允许任何程序获取该权限:false 4、查看源码得知安卓...6.0以下返回:false 5、总是允许权限后再次调用:false 在APP使用过程中,从设置中更改权限 如果应用程序的某个业务逻辑需要使用权限,但用户没有选择开启。...有没有链式、流式或者注解的方式去解决这个问题?有而且很多,以下是我在github 上找的start 最多的开源库。
现在我们点击第一个按钮Start SecondActivity跳转到第二个页面,然后看这个下面会执行那个回调方法。 ?...我们这个时候再按返回键BACK返回到第一个界面,再看一下会执行那些回调方法。 ? 可以看到先执行onRestart(),然后onStart(),最后onResume()。...执行onPause()方法,因为FirstActivity没有被完全覆盖所以不会执行onStart()方法。 这个时候我们点一下BACK返回到FirstActivity界面,会执行那些方法呢?...有没有发现很熟悉,没错,这个和我们在SecondActivity界面返回到FirstActivty界面时执行的方法一样,不信你回头去看。...到第二个页面看看。
领取专属 10元无门槛券
手把手带您无忧上云