初学安卓开发随笔之 Menu、toast 用法、活动的四种启动模式 以及 一个方便的Base活动类使用方法

摘要:
Menu首先在res目录中创建菜单文件夹,并创建main.xml,类似于以下代码<id=“@+id/add_item”android:
Toast

toast 是安卓系统的一种非常棒的提醒方式

首先定义一个弹出Toast的触发点,比如可以是按钮之类

其中 Toast.LENGTH_SHORT是指显示时长 还有一个内置变量为Toast.LENGTH_LONG可以选用。

 Toast.makeText(FirstActivity.this, "You clicked Button 1", Toast.LENGTH_SHORT).show();
Menu

首先 在res目录下新建一个menu文件夹 创建一个main.xml 类似于下面的代码

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/add_item"
        android:title="设置"/>
    <item
        android:id="@+id/remove_item"
        android:title="帮助"/>
</menu>

其中 item是具体的菜单项 id为标识符 title为名称

然后在活动中重写onCreateOptionsMenu()方法 (快捷键 Ctrl+O)

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    inflate 接受俩参数 第一个是资源文件 第二个是添加到哪一个menu对象中 。返回值决定是否能显示!!!
  定义菜单响应事件 重写onOptionsItemSelected()方法
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.add_item: Toast.makeText(this, "You Click 设置", Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(this, "You Click 帮助", Toast.LENGTH_SHORT).show(); break; default: } return true; }
活动的四种启动模式

standard、singleTop、singleTask和singleInstance 这四种

修改方法是在AndroidManifest.xml中给对应活动标签指定android:launchMode即可

standard   是默认的活动启动模式  (补充一点 Android 用返回栈管理活动) 即 不管是够以及在返回栈中存在的或者 启动都会创建该活动的一个实例

singleTop  对应于standard模式 对如果在返回栈中存在的活动就不再创建新的活动实例,直接使用它。(使用它可以很好的解决重复创建栈顶活动的问题哦!!!

singleTask  可以使得活动在整个应用程序的上下文中只存在一个实例。 在发现并直接使用已存在的实例活动时,会把这个活动之上的所有活动全部出栈!!!

singleInstance  特殊 + 复杂

这个模式下的活动 会启动一个新的返回栈来管理活动 这个模式是为了方便共享活动实例。 如下图解释 方便别的程序访问活动SecondActivity

初学安卓开发随笔之 Menu、toast 用法、活动的四种启动模式 以及 一个方便的Base活动类使用方法第1张

Base活动类使用方法

通过增写一个活动的公共父类来简化代码

public class BaseActivity extends AppCompatActivity {
    private static final String TAG = "BaseActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, getClass().getSimpleName());  
ActivityCollector.addActivity(
this);
    //因为活动管理器中用一个LIst进行暂存活动的,所以就可以用addActivity()将当前正在创建的活动添加到活动管理器里
    //然后只需要在onDestroy方法里调用removeActivity()方法即可
}
protected void onDestory(){ super.onDestroy(); ActivityCollector.removeActivity(this);    //这样以后想在哪退出程序只需调用ActivityCollector.finishALl()即可 } }

 PS

  在销毁所有活动后可以再加上杀掉当前进程的代码

  android.os.Process.killProcess(android.os.Process.myPid());  

  killProcess()可以杀掉一个进程 接受一个进程id参数, 而且只能用于杀掉当前进程,无法杀掉其他进程。

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇glsl 基础语法Tom猫小游戏功能实现下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

一文带你搞定AOP切面

摘要:AOP在spring中又叫“面向切面编程”,是对传统我们面向对象编程的一个补充,主要操作对象就是“切面”,可以简单的理解它是贯穿于方法之中,在方法执行前、执行时、执行后、返回值后、异常后要执行的操作。 本文分享自华为云社区《一篇文搞懂《AOP面向切面编程》是一种什么样的体验?》,作者: 灰小猿。 一、什么是Spring的AOP? AOP在sprin...

C#通过模板导出Word(文字,表格,图片)

  C#导出Word,Excel的方法有很多,这次因为公司的业务需求,需要导出内容丰富(文字,表格,图片)的报告,以前的方法不好使,所以寻找新的导出方法,在网上找到了通过模板文件导出Word的方法,记录一下过程. 一:模板的创建                                  通过模板导出,肯定需要先创建模板,然后顾名思义就是将模板中提前...

一套完整自定义工作流的实现

概述: 本工作流以一套金融软件业务处理流程为例,实现功能包括:流程自定义、步骤自定义、步骤重复次数、步骤类型(顺序/并行)、定义排序功能,完全使用数据库实现,本文将详细分析业务流程、系统设计及实现细节。 术语: 工作流(Workflow)[1],是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻...

Spring RestTemplate简介及使用

Spring RestTemplate介绍 1、springRestTemplate 简介 spring 提供的同步请求Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。 是Spring用于同步client端的核心类,简化了与http服务的通信,并满足RestFul原则,程序代码可以给它提...

ASP.NET偷懒大法三 (利用Attribute特性简化多查询条件拼接sql语句的麻烦)

        最近公司在做武汉公交信息化管理系统,做这种管理项目,最让人痛苦的就是表单的添加、修改、查询。添加、修改在我以前的文章中提到过,利用反射机制可以做到基本不写代码来完成。参见《ORM框架实现数据的自动绑定添加修改 <一>》。(不过遗憾的是,目前做的项目中没使用,还是在痛苦的写赋值语句)         上文中只是解决了添加、修改、显...

JavaScript核心之事件详解(EventTarget接口,js事件传播,Event对象)

事件是一种异步编程的实现方式,本质上是程序各个组成部分之间传递的特定消息。DOM支持大量的事件,本节介绍DOM的事件编程。 1 EventTarget接口DOM的事件操作(监听和触发),都定义在EventTarget接口。Element节点、document节点和window对象,都部署了这个接口。此外,XMLHttpRequest、AudioNode、A...