Content
- 总结自老师的文档
1. 创建一个Activity的流程
1.1. 设计并实现用户接口
- 衍生自 View 类的视图,控制 Activity 中特定的矩形空间,例如按钮
衍生自 ViewGroup 类的视图,是布局,例如线性布局
利用视图定义布局的最常见方法是借助保存在你的应用资源内的 XML 布局文件
1.2. 配置manifest
- 1.2.1. 在 manifest 中声明 activity
<activity android:name=".ExampleActivity" />
- 1.2.2. 配置使用 intent 过滤器
过滤器的作用就是声明其他 app 组件是如何激活该 activity 的
下面过滤器声明本 activity 对"main"动作进行响应,并处于"launcher"这个类别中<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
- 1.2.3. 声明权限
android:permission="com.google.socialapp.permission.SHARE_POST" //定义权限 <uses-permission android:name="com.google.socialapp.permission.SHARE_POST" /> //声明权限
1.3. 启动 Activity
- (显式Intent)一个 Activity 启动另一个名为 SignInActivity 的 Activity:
Intent intent = new Intent(this, SignInActivity.class); //从 this 启动 SignInActivity startActivity(intent);
- (隐式Intent)还可以对要执行的操作进行描述,若有多个 Activity 可以处理该 Intent,则由用户选择
例如你想允许用户发送电子邮件,可以创建以下 Intent:
Intent intent = new Intent(Intent.ACTION_SEND); //这个和等同于 intent.setAction intent.putExtra(Intent.EXTRA_EMAIL, recipientArray); startActivity(intent);
- 启动并获得返回结果
private void pickContact() { // Create an intent to "pick" a contact, as defined by the content provider URI Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI); startActivityForResult(intent, PICK_CONTACT_REQUEST); } //PICK_CONTACT_REQUEST,主调和被调之间的暗号,自定义的常量 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // If the request went well (OK) and the request was PICK_CONTACT_REQUEST if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) { // Perform a query to the contact's content provider for the contact's name Cursor cursor = getContentResolver().query(data.getData(), new String[] { Contacts.DISPLAY_NAME}, null, null, null); if (cursor.moveToFirst()) { // True if the cursor is not empty int columnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME); String name = cursor.getString(columnIndex); // Do something with the selected contact's name...