1.Intent分为显示调用和隐式调用
a.显示调用:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
b.隐式调用:
第一步,先编写清单文件
<activity android:name=".SecondActivity" >
<intent-filter>
<action android:name="com.example.activityteset.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
第二步,编写代码
Intent intent = new Intent("com.example.activityteset.ACTION_START");
startActivity(intent);
2.Intent除了可以进行页面的跳转外,还可以传值
方式1,向第二个页面传值
页面1代码:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("extra_data","此处是需要传递的值");-->此处是采用键值对的方式来进行的,extra_data是键,后面是值
startActicity(intent);
页面2代码:
Intent intent = getIntent();-->获得Intent
String data = intent.getStringExtra("extra_data");-->根据extra_data这个键,取出与之对应的值
Log.d("SecondActivity",data);-->从log中输出
方式2,向上一个页面传值
页面1代码:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
startActivityForResult(intent,1);---第一个参数是意图,第二个参数可以是任意唯一数字
/** 由于使用的是startActivityForResult调用的第二个活动,所以在第二个活动结束前会调用onActivityResult方法,所以要重写该方法*/
switch(requestCode){
case 1:---对应上面startActivityForResult(intent,1);l里的1
if(resultCode == RESULT_OK){
String returndata = data.getStringExtra("extra_data");
Log.d("FirstActivity",returndata);
}
break;
default:
}
页面2代码:
Intent intent = new Intent();
intent.putExtra("extra_data","此处是要返回的数据");
setResult(RESULT_OK,intent);---第一个参数代表处理结果,一般写RESULT_OK和RESULT_CANCELED这两个值
finish();
3.活动的生命周期:
onCreate(建立)-->onStart(开始)-->onResume(继续)-->onPause(暂停)-->onStop(停止)-->onDestory(销毁)
4.若想设置一个对话框似的activity,则需要在清单文件里设置主题
<activity android:name=".DialogActivity" android:theme="@android:style/Theme.Dialog"></activity>
5.如果当前的activity被打断,并且希望保留打断之前的数据,那么需要重写onSaveInstanceState方法
super.onSaveInstanceState(outState);---outState是Bundle类型的对象
outState.putString("data_key","此处填写要保存的信息");
在onCreate方法中恢复数据
super.onCreate(saveInstanceState);
if(saveInstanceState!=null){
String data = saveInstanceState.getString("data_key");
Log.d(FirstActivity,data);
}
6.活动的启动模式
standard---调用一个Activity就会覆盖当前栈,即使被调用是当前的Activity,那么也会覆盖
singleTop---如果被调用是当前的Activity,并且处于栈顶,那么就不会再重新覆盖
如果被调用的Activity不在栈顶,那么就会重新覆盖,但是此时的Activity和栈底部的Activity在本质来讲已经不是同一个Activity了
singleTask---被调用的Activity在当前栈中是唯一的,如果调用底部的Activity,那么它上面的所有Activity全部执行出栈操作
singleInstance---设立单独的一个栈来管理,比如:A和C是一个栈,B是单独的一个栈,正确顺序是A进入B再进入C,但是返回的时候是C->A->B->退出
7.控制手机返回键的功能要重写onBackPressed方法