Activity 是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之一。Activity是一个应用程序组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。
结构图1. Activity的基本使用
1)继承Activity初始化控件,实现Activity的生命周期方法。
public class MainActivity extends Activity {
private Textview textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView= (TextView) this.findViewById(R.id.textView);
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy");
}
}
2)在Manifest.xml清单文件中注册Activity。
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
2. Activity的生命周期
3. Activity的启动模式
4. Activity的数据传递
5. Activity常见使用场景
-
启动、关闭Activity
1)启动Activity有如下两个方法:
startActivity(Intent intent); // Activity页面跳转
startActivityForResult(Intent intent , int resquestCode); // Activity页面回传跳转
2)关闭Activity有如下两种方法:
finish(); // 结束当前Activity
finishActivity(int requestCode); // 结束指定Activity
-
数据交互
Intent提供多个重载方法,如下:
1)向Intent中放入数据:putExtra(Bundle data);
2)从Intent中取出数据:Bundle getExtra();
3)向Intent中按key_value键值对的形式存入数据:putExtra(String name,Xxx value);
4)指定的key,取出数据:getXXXExtra(String name);
传值方法一:
Intent intent = new Intent(MainActivity.this,TestActivity.class);
intent.putExtra("path","www.baidu.com");
startActivity(intent);
传值方法二:
Intent intent = new Intent(MainActivity.this,TestActivity.class);
Bundle bundle = new Bundle();
bundle.putString("path","www.baidu.com");
intent.putExtras(bundle);
startActivity(intent);
传值方法三:
Intent intent = new Intent(MainActivity.this,TestActivity.class);
intent.putExtra("path","www.baidu.com");
startActivityForResult(intent, 1);
接收方法一:
Intent getIntent = this.getIntent();
String url = getIntent.getStringExtra("path");
接收方法二:
Bundle bundle = this.getIntent().getExtras();
String url = bundle.getString("path");
回传方法:
Intent intent = new Intent();
intent.putExtra("Data", "from Second");
setResult(RESULT_OK,intent);
回调方法:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
if(resultCode == RESULT_OK){
String string=data.getStringExtra("Data");
Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
网友评论