现在的位置: 首页 > 综合 > 正文

android Toast

2018年03月31日 ⁄ 综合 ⁄ 共 8411字 ⁄ 字号 评论关闭

6.1.Toast

6.1.1.概述

Toast类用于显示字符串,在开发过程中测试时可以用来代替日志输出调试信息。

也常用于给用户简短提示,不需要用户确认,

例如:下载MP3完成后弹出一个Toast提示下载完成。

6.1.2.常用方法

1、makeText(Contextr context, Charsequence message, int duration);

作用:创建一个Toast对象,该方法是Toast类的静态方法。

参数-duration:显示消息的持续时间,单位是毫秒。有两个预定义的常量值:

Toast.LENGTH_LONG:持续时间3~4秒;

Toast.LENGTH_SHORT:持续时间2~3秒;

【示例代码】Toast toast=Toast.make(this,”这是一个用于显示消息的字符串”,3000);

说明:创建一个toast对象。

提示:以上代码只是创建,还没有在窗口中显示信息。

2、show():

作用:显示Toast对象中的信息。

【示例代码-1】

toast.show();

说明:在窗口中显示以上创建的toast对象中第二个参数的字符串,持续时间是3000毫秒。

【示例代码-2】

Toast.make(this,”这是一个用于显示消息的字符串”,Toast.LENGTH_LONG).show();

说明:创建Toast对象并显示内容。

【示例代码-3】:显示xml文件中定义的字符串:

步骤1、在res/values/strings.xml中定义一个字符串值,如下代码中红框所示:

<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="app_name">Exer06_1-Toast示例</string>

    <string name="toast2">这是资源中存放的字符串</string>

</resources>

步骤2、在MainActivity.onCreate()方法中,用如下代码调用并显示以上红框中的字符串:

Toast.makeText(this, getText(R.string.toast2),2000).show();

说明:调用Activity中的getText()方法,该方法负责将资源索引转换为字符串值。

6.2.通知

6.2.1.概述

Notification是Android中一个重要的系统服务 , Notification显示通知信息在手机状态栏,手机状态栏位于屏幕最上方,那里通常显示手机当前的网络状态、电池状态、时间、短信等。Notification代表的是一种具有全局效果的通知,Notification对象要通过NoitificationManager来发送。

6.2.2.Notification

6.2.2.1.概述

Notification类用于存放通知标题、内容、图标以及发送的目标对象。

6.2.2.2.常用属性

1、icon:通知的图标;

【示例代码】

Notification notif=new Notification();

notif.icon=R.drawable.icon;

说明:第一行创建通知对象,第二行设置通知对象的icon的图标,该图标用了Android默认的icon图标,也可以是其它图片。

2、tickerText:通知标题,该标题显示在窗口的状态栏中。

示例代码:notif.tickerText=”通知来啦”;

6.2.2.3.创建通知对象

Notification对象可以如以上所示创建,再设置对象的图标、标题等属性,也可以按如下方法创建:

//创建通知对象,第一个参数是通知的图标,第二个参数是通知的标题,第三个参数是通知的时间

Notification notification=new Notification(

R.drawable.icon,"通知来啦!",System.currentTimeMillis());

6.2.2.4.常用方法

setLatestEventInfo(mContext"通知标题""通知内容",pendIntent);

作用:设置点击通知的响应事件。

参数-mContext:当前Activity对象。

参数-通知标题:该标题不是上述的窗口状态栏的标题。

参数-通知内容:通知的详细内容。

参数-pendIntent稍后详述。

如图-1所示:

图-1

6.2.3.NotificationManager

6.2.3.1.概述

NotificationManager类是通知管理器对象,用于发送、取消通知。

6.2.3.2.常用方法

1、notify(int id,Notification notif);

作用:发送一个通知。

参数-id:该通知的id值,用于区别其它通知。

参数-notif:已创建的通知对象。

【示例代码】notifManager.notify(100,notif);

说明:notifManager是一个已创建的NotificationManager对象,notif是一个已创建的Noification对象。

2、cancel(int);

作用:关闭指定索引值的通知。

示例代码:notifManager.cancel(100);

6.2.4.PendingIntent

6.2.4.1.概述

该类是Intent类的包装类,对intent进行再封装,封装后,可以多次发intent,并能使intent发送的目标组件在用户点击后再启动。

6.2.4.2.创建步骤

步骤1、创建Intent,示例代码如下:

Intent intent=new Intent(context,targetActivity.class);

步骤2、创建PendingIntent对象,并对intent进行包装,代码如下:

//创建pendIntent对象,用于封装intent并起到延迟使用通知的作用

PendingIntent pendIntent=PendingIntent.getActivity(

context, 0, intent, 0);

说明:

(1)当通知的目标是Activity时,用PendingIntent的静态方法getAcivity()创建PendingIntent对象;若通知的目标组件是Service则用getService()方法;若通知的目标组件是BroadcastReceiver,则用getBroadcast()方法。

参数-conext当前Activity对象。

参数-targetActivity.class:一个请求码,用0即可。

参数-intent:步骤1中定义的intent对象。

第四个参数设置为0即可。

6.2.4.3.发送通知的步骤

步骤1创建intent对象,发送的目标ActivityTargetActivity,代码如下:

Intent intent=new Intent(mContext,TaregetActivity.class);

步骤2创建pendIntent对象,用于封装intent并起到延迟使用通知的作用

PendingIntent pintent=PendingIntent.getActivity(

mContext, 0, intent, 0);

步骤3创建通知对象,第一个参数是通知的图标,第二个参数是通知的标题,第三个参数是通知的时间

Notification notification=new Notification(

R.drawable.icon,"通知来啦!",System.currentTimeMillis());

步骤4设置点击通知的事件,第二个参数:通知标题,第三个参数:通知内容

notification.setLatestEventInfo(mContext"通知标题""通知内容",pintent);

步骤5创建通知管理器对象

NotificationManager notifManager=(NotificationManager)

getSystemService(Context.NOTIFICATION_SERVICE);

步骤6发送id值是100的通知

notifManager.notify(100, notification);

6.3.菜单

6.3.1.概述

在手机中,菜单默认是隐藏的,通过按menu键显示菜单。对于系统中必要的,但又不是常用的功能(这些功能放在桌面上不太合适)一般放在菜单中。菜单创建有两种方式,一种是Java代码创建,一种是在xml文件中定义为资源,然后由Java代码解析。实际开发推荐使用第二种创建方式。

Android提供了如下接口用于实现菜单操作:

1、Menu,该接口是父接口,用于创建主菜单。

2、SubMenu接口继承了Menu接口,用于创建子菜单。

3、MenuItem接口:用于创建菜单项。

4、ContextMenu接口继承了Menu接口,用于创建上下文菜单。

说明:ContextMenu菜单将在以后介绍。

5、MenuInflater类:解析资源中定义的菜单。

6.3.2.Menu接口

6.3.2.1.概述

Menu接口用来管理菜单。

6.3.2.2.常用方法

1、MenuItem  add(int titleRes);

作用:添加一个新的菜单项(其中titleRes是菜单项内容的资源id值)。

说明:菜单项的内容放在xml文件中,作为资源来调用。

2、MenuItem add(CharSequence title);

作用:添加一个新的菜单项。

说明:

(1)title:菜单项的内容,是一个CharSequence类型的字符串。

(2)1和2是方法名相同、参数类型不同的重载方法。

3、MenuItem  add(int groupId,int itemId,int order,CharSequence title);

作用:添加一个新的菜单项。其中:

(1)groupId:组菜单的id值,菜单可以分组显示,groupId用于区分不同组的菜单。

(2)itemId:菜单项的id值,这个id值是菜单中唯一的值,不同组的菜单项的itemId也不能相同。

(3)order:菜单项显示的顺序,order值小的菜单项在菜单中靠上面显示。

4、MenuItem  add(int groupId,int itemId,int order,int titleRes);

作用:添加一个新的菜单项。其中:titleRes是菜单项显示内容的资源id值。

说明:3和4是方法名相同、参数个数不同的重载方法。

5、SubMenu  add(int titleRes);

作用:添加一个新的子菜单。

6、SubMenu  add(CharSequence title);

作用:添加一个新的子菜单。

7、SubMenu  addSubMenu(int groupId,int itemId,int order,int titleRes);

作用:添加一个新的子菜单。该子菜单位于groupId所在的组

说明:参数的意义与3、中的说明相同。

8、SubMenu  addSubMenu(int groupId,int itemId,int order,CharSequence title):添加一个新的子菜单。

6.3.3.SubMenu接口

提供以下常用的菜单操作方法:

1、SubMenu  setHeaderIcon(Drawable icon):设置菜单头的图标。

2、SubMenu  setHeaderIcon(int iconRes):设置菜单头的图标。

3、SubMenu  setHeaderTitle(int titleRest):设置菜单头的标题

4、SubMenu  setHeaderTitle(CharSequence title):设置菜单头的标题。

5、SubMenu  setHeaderView(View view):使用View类设置菜单头。

6.3.4.  MenuInflater类

6.3.4.1.概述

MenuInflater类用于解析菜单资源。

6.3.4.2.常用方法

Void Inflate(resId);

作用:解析resId指定的菜单资源。

示例代码:

MenuInflater inflater= getMenuInflater();

Inflater.inflat(R.menu.options);

说明:稍后介绍菜单资源的制作。

6.3.5.代码创建菜单

重写Activity类中的onCreateOptionsMenu(Menu menu)方法,在该方法中调用menu对象添加子菜单、菜单项。

1、代码示例-创建简单的菜单:

@Override

    public boolean onCreateOptionsMenu(Menu menu) {

    menu.add(0,MENU_ITEM_UPDATE,0,"更新记录");

    menu.add(0,MENU_ITEM_INSETRT,0,"插入记录");

    menu.add(0,MENU_ITEM_DELETE,0,"删除记录");

    menu.add(0,MENU_ITEM_QUERY,0,"查询记录");

    return super.onCreateOptionsMenu(menu);

    }

说明:代码中有四个常量,分别表示整数0-3,类的开始定义为如下代码所示:

public class MainActivity extends Activity {

static final int MENU_ITEM_UPDATE=0;

static final int MENU_ITEM_INSETRT=1;

static final int MENU_ITEM_DELETE=2;

static final int MENU_ITEM_QUERY=3;

2、代码示例-创建带子菜单的菜单:

   @Override

    public boolean onCreateOptionsMenu(Menu menu) {

     SubMenu smUpdate=menu.addSubMenu(0, MENU_ITEM_UPDATE, 0, "更新记录");

     smUpdate.setIcon(R.drawable.update);

     smUpdate.add("更新所有记录");

     smUpdate.add("按姓名更新");

     smUpdate.add("按成绩更新");

    SubMenu smQuery=menu.addSubMenu(0,MENU_ITEM_QUERY,0,"查询记录");

    smQuery.setIcon(R.drawable.query);

    smQuery.add("查询所有记录");

     smQuery.add("按姓名查询");

     smQuery.add("按成绩查询");

    return super.onCreateOptionsMenu(menu);

    }

说明:以上代码中的两个常量,是(1)中的四个常量的其中两个。

6.3.6.在资源中定义菜单

步骤1、在资源中定义菜单

按以下步骤定义菜单资源:

(1) 在res文件夹下创建menu文件夹;

(2) 在menu文件夹下创建options.xml文件;

(3) options.xml代码如下所示:

<?xml version="1.0" encoding="UTF-8"?>

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

<item android:id="@+id/miUPdate" 

 android:title="更新记录" 

 android:icon="@drawable/update">

<!-- 子菜单 -->

<menu>

<item android:title="更新所有记录"/>

<item android:title="按姓名更新"/>

<item android:title="按成绩更新"/>

</menu>

</item>

<item android:id="@+id/miInsert"

android:title="插入记录"

android:icon="@drawable/insert"/>

<item android:id="@+id/miDelete"

android:title="删除记录"

android:icon="@drawable/delete"/>

<item android:id="@+id/miQuery"

android:title="查询记录"

android:icon="@drawable/query"/>

</menu>

步骤2、在onCreateOptionsMenu方法中编写解析菜单资源的代码,如下所示:

   @Override

    public boolean onCreateOptionsMenu(Menu menu) {

    //创建菜单资源解析对象

    MenuInflater inflater=getMenuInflater();

    //解析菜单资源

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

    return super.onCreateOptionsMenu(menu);

    }

6.3.7.菜单项响应事件

重写Activity类中的onOptionsItemSelected(MenuItem mi)方法,在该方法中编写菜单项被选择后的事件代码。

步骤1、代码解析菜单资源

(1)创建onOptionsItemSelected事件方法,操作方法:输入onOp再按Alt+/,按回车键。

(2)输入以下代码:

   @Override

    public boolean onOptionsItemSelected(MenuItem item) {

    switch(item.getItemId()){

    case R.id.miUPdate:

    Toast.makeText(this"选择了更新菜单", 5000).show();

    break;

    case R.id.miInsert:

    Toast.makeText(this"选择了插入菜单", 5000).show();

    break;

    case R.id.miDelete:

    Toast.makeText(this"选择了删除菜单", 5000).show();

    break;

    case R.id.miQuery:

    Toast.makeText(this"选择了查询菜单", 5000).show();

    break;

    }

    return super.onOptionsItemSelected(item);

    }

6.4.常用技巧

6.4.1. 将数据类型转化为字符串类型

方式1、String  StringValue(int);

方式2、String s=””+100;

6.4.2. Android SDK图片资源路

   android-sdk_r13-windows\platforms\android-10\data\res\drawable-hdpi

6.5.常见错误

6.5.1.Eclipse与模拟器断开

当Eclipse与模拟器断连,或者Devices视图中显示模拟器offline的问题。

   解决方法:在命令行中执行

//结束adb进程,相当于windows任务管理器中结束了adb.exe。

         adb kill-server 

//启动adb进程,这样eclipse与模拟器重新连接

         adb devices    

6.5.2. ROM存储空间不足

若控制台中出现如下提示信息:

   Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE

   原因:ROM存储空间不足

   解决方法:卸载掉部分应用程序,再安装。

6.5.3. Toast.makeText()在窗口中不显示信息

解决办法:Toast创建后需要调用show()方法显示

6.5.4.菜单项不显示

系统菜单项的限制最多显示6个菜单项,如果超过6个,只显示5个,其余菜单项以列表的形式

   显示,同时没有图片。

抱歉!评论已关闭.