动态显示文件名之 Intent和Menu
2015-10-24 21:22
232 查看
最初的想法:创建一个新的activity,然后用menu的方式在此 新的activity下显示文件名称。
根据逐步了解到的信息,采用listview控件完成此工作更加合适。本文主要总结前期针对Intent和Menu的使用。
1. Intent 使用
用于activity之间的通讯,例如activityA 中启动 activityB;或者activityA启用某个action,android中的action完全说明参考文献[2]。
(1) 为测试需要,首先增加一个activity。
(1.1) 在AndroidManifest.xml 中增加配置
(1.3) 增加新的类: /filedel/src/com/example/filedel/FileDispActivity.java 并在其中override onCreate等接口。
(2) 新的activity建立后,在mainActivity中进行调用。
Intent调用分为显式调用和隐式调用,此处采用显式调用,直接指定要调用的activity对应的类。
此处直接通过指明要调用的activity(FileDispActivity)类,来运行FileDispActivity,为显式调用,即一眼就能看出调用的哪个activity。
另外一种方式,隐式调用,代码如下:
此处在创建新的Intent参数时,仅仅指明了Intent的action类型,而后所有注册为此action类型的activity都会被通知到。以此为例,我们在(1.1)节中设置了intent-filter,指明了此activity对应的action名字为VIEW,因而上述隐式调用命令中携带的Intent.ACTION_VIEW会由OS发送到此activity中,而后此activity检查自己注册了VIEW action,则响应OS的启动命令,进行activity的运行,具体运行的activity由配置文件中的activity
android :name来指定。其中创建对象时要添加ACTION_前缀。隐式调用的效果如下图,除了我们自己(红圈)的activity,还有其他的(绿线 )也被通知到了。
![](http://img.blog.csdn.net/20151025114953312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2. menu的使用
分为option menu和context menu。考虑到交互性,使用context menu。
context menu 需要和某个view进行关联,在使用之前,先要创建一个view组件,并将此view组件和menu进行关联,以后点击此view组件时,就会弹出创建的menu。
2.1 在中增加一个view组件
2.3 将初始创建的View控件注册为一个contextMenu,进行此种注册后,VIEW控件就类似一个button按键,每当按此VIEW控件时,就会弹出菜单
参考资料:
1. Android Intent action 说明。
Intent action 主要介绍了intent filter中 action字段配置的意义及用途
2.intent action 大全 action详细说明
3. inflate
inflate说明 讲述inflate作用,某个activity中存在多个layout,从一个activity中找出某个layout。
根据逐步了解到的信息,采用listview控件完成此工作更加合适。本文主要总结前期针对Intent和Menu的使用。
1. Intent 使用
用于activity之间的通讯,例如activityA 中启动 activityB;或者activityA启用某个action,android中的action完全说明参考文献[2]。
(1) 为测试需要,首先增加一个activity。
(1.1) 在AndroidManifest.xml 中增加配置
<activity android:name="com.example.filedel.FileDispActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>(1.2) 增加新的布局文件 /filedel/res/layout/file_display.xml
(1.3) 增加新的类: /filedel/src/com/example/filedel/FileDispActivity.java 并在其中override onCreate等接口。
(2) 新的activity建立后,在mainActivity中进行调用。
Intent调用分为显式调用和隐式调用,此处采用显式调用,直接指定要调用的activity对应的类。
Intent FileDispActivity = new Intent(MainActivity.this,FileDispActivity.class); startActivity(FileDispActivity);
此处直接通过指明要调用的activity(FileDispActivity)类,来运行FileDispActivity,为显式调用,即一眼就能看出调用的哪个activity。
另外一种方式,隐式调用,代码如下:
Intent FileDispActivity = new Intent(Intent.ACTION_VIEW); startActivity(FileDispActivity);
此处在创建新的Intent参数时,仅仅指明了Intent的action类型,而后所有注册为此action类型的activity都会被通知到。以此为例,我们在(1.1)节中设置了intent-filter,指明了此activity对应的action名字为VIEW,因而上述隐式调用命令中携带的Intent.ACTION_VIEW会由OS发送到此activity中,而后此activity检查自己注册了VIEW action,则响应OS的启动命令,进行activity的运行,具体运行的activity由配置文件中的activity
android :name来指定。其中创建对象时要添加ACTION_前缀。隐式调用的效果如下图,除了我们自己(红圈)的activity,还有其他的(绿线 )也被通知到了。
2. menu的使用
分为option menu和context menu。考虑到交互性,使用context menu。
context menu 需要和某个view进行关联,在使用之前,先要创建一个view组件,并将此view组件和menu进行关联,以后点击此view组件时,就会弹出创建的menu。
2.1 在中增加一个view组件
<TextView android:id="@+id/menu" android:layout_width="200dp" android:layout_height="300dp" android:layout_alignRight="@+id/filelist" android:layout_below="@+id/hidenFile" android:layout_marginTop="20dp" android:text="@string/Menu" />2.2 增加menu配置文件 /filedel/res/menu/contextmenu.xml,并在其中增加菜单项
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <group android:id="@+id/group1" android:visible="true" android:checkableBehavior="all" android:menuCategory="container" android:enabled="false"> <item android:id="@+id/item1" android:enabled="true" android:menuCategory="container" android:checked="false" android:visible="true" android:title="file1" android:checkable="true"></item> <item android:id="@+id/item2" android:title="file" android:visible="true" android:enabled="true" android:checkable="false" android:checked="true" android:menuCategory="container"></item> </group> </menu>
2.3 将初始创建的View控件注册为一个contextMenu,进行此种注册后,VIEW控件就类似一个button按键,每当按此VIEW控件时,就会弹出菜单
TextView menuTv= (TextView) findViewById(R.id.menu); registerForContextMenu(menuTv);2.4 override onCreateContextMenu的实现。其中调用了Menu的inflate,是为了从mainAcitivity中找出contextmenu对应的layout。假如在2.3中针对多个View控件注册了contextMenu,那么此处应该根据View中的ID等字段来分别inflate。
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.contextmenu, menu); }
参考资料:
1. Android Intent action 说明。
Intent action 主要介绍了intent filter中 action字段配置的意义及用途
2.intent action 大全 action详细说明
3. inflate
inflate说明 讲述inflate作用,某个activity中存在多个layout,从一个activity中找出某个layout。
相关文章推荐
- POJ3581:Sequence(后缀数组)
- (算法)求表达式(含括号)的值
- 今天你学到了啥?
- ubuntu输入密码后无法进入图形桌面
- 使用 Jni 调用 Dll 的实现JAVA在cmd控制台刷屏
- wordpress 后台取消显示custom fields(remove_meta_box)
- Android开发-控件
- Windows下如何查看被占用的端口号及如何释放被占用的端口号
- 2015-10-21 C#1
- ACM学习历程—HDU 5073 Galaxy(数学)
- 夺命雷公狗---无限级分类NO4
- HDU3584Cube(三维树状数组)
- 1024杂项1
- 夺命雷公狗---无限级分类NO3
- 项目实训--物流管理系统之调度中心
- argument和parameter的区别
- 阅读优秀代码是提高开发人员修为的一种捷径
- OC单例概念以及样例
- 应用于cookie
- hdu2030