萌新的Android Studio学习笔记(二)

android studio 下载 | 2018-07-21 13:21

一、在活动中使用Menu

安卓用户应该比较熟悉,menu指的是活动右上角的竖排的三个点,点击后会显示出开发者提供的菜单。AS中的菜单与活动的布局文件没有本质区别,都是在res文件夹下通过xml文件定义,并在相应活动中调用后起到作用。

为了与活动布局文件有所区别,在res文件夹下新建menu文件夹作为menu的存放目录。右键该目录新建Menu resource file,打开该文件可以发现与first_layout.xml文件没有本质区别,只是LinearLayout标签变成了meun标签。可以在其内部通过item标签添加选项,当然这里并不能实现选项的具体功能,只是让这个选项显示出来而已。

之后转到Activity编写menu逻辑。首先重载onCreateOptionMenu方法,由于我们之前创建的menu是布局文件,所以需要通过inflate方法将menu从layout布局文件实例化为view对象(大概就是类和对象的关系)。

这里产生了一个问题,为什么在onCreate方法中调用活动布局的时候不需要实例化呢?这是因为setContentView起到了将布局文件实例化为view对象并显示出来的作用,而LayoutInflater.inflate的作用仅仅是实例化,故其往往用于动态加载被改变的view对象。

截图中高亮的一行实际上应该写为:

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.options_menu, menu);

之后重载onOptionsItemSelected方法写出布局文件中定义选项的具体逻辑:

等于七的调试画面:

二、通过Intent跳转活动

Intent是Android程序中各组件进行交互的方式,可以用于传递数据、执行动作等,也可以用于活动间的跳转。

构造函数中第一个参数为上下文,第二个参数为目标活动,两者形成了一个意图。运行后点击按钮成功打开活动2。

除了上述显式intent,还有一种隐式intent,通过抽象信息自行判断该启动哪个活动。要使用隐式intent首先要在AndroidManifest.xml文件中为活动2添加标签:

在活动1中将intent构造函数改为相应action:

运行后成功跳转。

<intent-filter>标签实际上配置了该活动所能响应的intent。本机所有符合action,category,data的intent都可以被该活动响应。

通过将数据存入intent还可以实现向下一活动传递数据的功能:

在Button1中存入额外数据

在活动2的中输出传递的数据

Log中成功输出

与此类似,在返回上一个活动时,也可以将数据传回上一活动,逻辑与上述情况类似,主要不同在于要在前一活动回调被重载的onActivityResult方法来处理返回数据。