1:Toast:
Toast是一个提醒消息框,用于将一些短小的信息通知给用户,不占用屏幕空间,而且会在一段时间后自动消失。
例子
Toast.makeText(this, "xxxxxxx", Toast.LENGTH_SHORT).show();
参数:(context上下文,"文本信息",toast显示时长)2:menu:
在res/menu/目录下新建xml文件,在里面写入类似这样的代码:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.tony.book.activitymenu.MainActivity" >
<item android:id="@+id/action_settings" android:orderInCategory="100" android:title="@string/action_settings" app:showAsAction="never" />
<item android:id="@+id/add_item" android:title="Add"></item>
<item android:id="@+id/remove_item" android:title="remove"></item>
</menu></span>
然后在mainActivity中重写onCreateOptionMenu()为当前活动创建菜单和onOptionsItemSelected()添加菜单相应事件,如:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case R.id.add_item:
Toast.makeText(this, "you clicked add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "you clicked remove", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return true;
}
3:Intent:
用于在Activity,Service,广播,内容提供器等组件间来回穿梭,跳转。
Intent可以指定用于启动活动,服务,广播等,或者在组件间来回传递信息。主要分为显式Intent和隐式Intent。
1)显式Intent
举例:启动另一个活动:
Intent intent=new Intent(MainActivity.this,secondActivity.class);
startActivity(intent);
Intent有多种构造函数,我们选用其中一种来完成启动下一个活动的功能。重载该构造函数(context上下文,要打开的活动)并将意图具现化为intent,传入startActivity()启动目标活动。
2)隐式Intent
并不明确指出我们要启动哪一个活动,通过action,category等信息表达,交由系统分析到底做什么。
例子:
在AndroidManifest.xml文件中的第二个活动(要打开的)的<activity>部分中添加<intent-filter>,在其中指定该活动响应的action和category。
添加<intent-filter>部分:
<activity android:name=".secondActivity"
android:launchMode="singleInstance">
<intent-filter >
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="com.example.activitytest.MY_CATEGORY" />
</intent-filter>
</activity>
当其与开始的活动的Intent指定的action和category匹配时,这个活动就会响应Intent。
有点像广播的说。
Intent指定action和category:
Intent intent = new Intent("com.example.activitytest.ACTION_START");
intent.addCategory("com.example.activitytest.MY_CATEGORY");
更多隐式Intent的用法:
打开网页:
调用Android内置动作ACTION_VIEW,即打开系统浏览器。通过Uri.parse()将一个网址字符串解析成一个Uri对象,调用Intent的setData()方法传入uri。
Intent intent=new Intent(Intent.ACTION_VIEW)
intent.setData(Uri.parse("http://www.baidu.com"))
同样需要在AndroidManifest.xml里注册
<data android:scheme="http">
再比如在活动中调用拨号
Intent intent=new Intent(Intent.ACTION_DIAL)
intent.setData(Uri.parse("tel:10086))
3)那么如何在活动之间传递数据呢?
范例:从FirstActivity传data到SecondActivity
FirstActivity:
String data="Hello SecondActivity";
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("extra_data", "data");//(键,数据)
startActivity(intent);
SecondActivity:
onCreate():
Intent intent=getIntent();
String data=intent.getStringExtra("extra_data");
Log.d("SecondActivity",data);
4)返回数据给上一个活动
范例:从FirstActivity返回data到SecondActivityFirstActivity:
使用startActivityForResult()以返回数据的目的启动SecondActivityIntent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent,1);
1是请求码
得到数据:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
switch (requestCode) {
case 1:
if(resultCode==RESULT_OK){
String returnedData=data.getStringExtra("data_return");
Log.d("MainActivity", returnedData);
}
break;
default:
break;
}
}
SecondActivity:
Intent intent=new Intent();
intent.putExtra("data_return", "Hello MainActivity");
setResult(RESULT_OK, intent);//(处理结果,数据)
finish();