这是本文档旧的修订版!
主要用于和用户进行交互。
在<activity>
标签的内部加入<intent-filter>
标签,添加下面两句声明即可:
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
用途:将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。
Button button1 = (Button) findViewByid(R.id.button_1); button1.setOnClicklistener(new View.OnClicklistener() { @Override public void onClick(View v) { Toast.makeText(FirstActivity.this, "你点击了Button1", Toast.LENGTH_SHORT).show(); } });
可以通过findViewById()
获取布局文件中定义的元素。
setOnClicklistener()
方法为按钮注册一个监听器,点击按钮时就会执行监听器中的onClick()
方法。
getMenuinflater()
方法能够得到Menuinflater
对象,再调用它的inflate()
方法就可以给当前活动创建菜单。
finish()
Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
Intent一般可被用于启动活动、启动服务、发送广播等场景。
Intent分两种:显示Intent、隐式Intent。
intent.addCategory("com.exampte.activitytest.MY_CATEGORY");
<activity android:name=".SecondActivity" > <intent-filter> <action android:name="com.example.activitytest.ACTION_START" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="com.exampte.activitytest.MY_CATEGORY"/> </intent-filter> </activity>
不仅可以启动自己程序内的活动,还可以启动其他程序的活动。
//调用系统浏览器打开网页 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("http://www.baidu.com"));
//调用系统拨号界面 Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:18886"));
使用putExtra()
存放数据到intent:
String data = "Hello SecondActivity"; Intent intent = new Intent{FirstActivity.this, SecondActivity.class); intent.putExtra("extra_data", data);
使用getStringExtra()
获取数据:
Intent intent = getIntent(); String data = intent.getStringExtra("extra_data");
FirstActivity按钮onClick()中添加:
Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivityforResult(intent, 1);
startActivityForResult()
方法接收两个参数,第一个参数还是Intent, 第二个参数是请求码,用于在之后的回调中判断数据的来源。
SecondActivity按钮onClick()中添加:
Intent intent = new Intent(); intent.putExtra("data_return", "Hello FirstActivity"); setResult(RESULT_OK, intent);
调用了setResult()
方法。这个方法非常重要,是专门用于向上一个活动返回数据的。
SecondActivity销毁后,在FirstActivity中判断:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case 1: if (resultCode == RESULT_OK) { String returnedData = data.getStringExtra("data_return"); Log.d("FirstActivity", returnedData); break; default: } }
如果使用Back键
回到FirstActivity,则重写SecondActivity中的onBackPressed()
方法即可。
onSaveinstanceState()
回调方法,这个方法可以保证在活动被回收之前一定会被调。
//在MainActivity中添加以下代码,可以将临时数据进行保存: @Override protected void onSaveinstanceState(Bundle outstate) { super.onSaveinstanceState(outState); String tempData = "Something you just typed"; outState.putString("data_key", tempData); }
//修改MainActivity的onCreate()中添加如下代码,进行数据恢复 @Override protected void onCreate(Bundle savedinstanceState) { ... if (savedinstanceState != null) { String tempData = savedinstanceState.getString("data_key"); Log.d(TAG, tempData); } ... }
启动模式4种:stantdard、singleTop、singleTask、singleInstance。
可以在AndroidManifest.xml
中通过给<activity>
标签指定android:launchMode
属性来选择启动模式。
standard是活动默认的启动方式。
getClass().getSimpleName()