在一个项目之中,会由多个Activity程序所组成,那么此时,这多个Activity程序之间就需要进行通讯,而这之间的通讯就依靠Intent完成。
Activity程序支持的Intent操作方法
No.
|
方法
|
类型
|
描述
|
1
|
public void startActivity(Intent intent)
|
普通
|
启动一个Activity,并通过Intent传送数据
|
2
|
public void startActivityForResult(Intent intent, int requestCode)
|
普通
|
启动并接收另一个Activity程序回传数据,当requestCode大于0才可以触发onActivityResult()
|
3
|
public Intent getIntent()
|
普通
|
返回启动当前Activity程序的Intent
|
4
|
protected void onActivityResult(int requestCode, int resultCode, Intent data)
|
普通
|
当需要接收Intent回传数据的时候覆写此方法对回传操作进行处理
|
5
|
public void finish()
|
普通
|
调用此方法会返回之前的Activity程序,并自动调用onActivityResult()方法
|
6
|
public final Cursor managedQuery (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
|
普通
|
处理返回的Cursor结果集
|
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/MyLayout" ? 布局管理器ID android:orientation="vertical" ? 所有组件垂直摆放 android:layout_width="fill_parent" ? 布局管理器宽度为屏幕宽度 android:layout_height="fill_parent"> ? 布局管理器高度为屏幕高度 <Button ? 定义按钮组件 android:id="@+id/mybut" ? 组件ID,程序中使用 android:layout_width="wrap_content" ? 组件宽度为文字宽度 android:layout_height="wrap_content" ? 组件高度为文字高度 android:text="按我将跳转到另一个Activity程序"/> ? 默认显示文字 <TextView ? 文本显示组件 android:id="@+id/msg" ? 组件ID,程序中使用 android:layout_width="wrap_content" ? 组件宽度为文字宽度 android:layout_height="wrap_content"/> ? 组件高度为文字高度 </LinearLayout>
public class Send extends Activity { private Button mybut = null ; // 按钮组件 private TextView msg = null ; // 文本组件 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.send_main); // 默认布局管理器 this.mybut = (Button) super.findViewById(R.id.mybut) ; // 取得组件 this.msg = (TextView) super.findViewById(R.id.msg) ; // 取得组件 this.mybut.setOnClickListener(new OnClickListenerImpl()); // 定义单击事件 } private class OnClickListenerImpl implements OnClickListener { @Override public void onClick(View view) { Intent it = new Intent(Send.this, Receive.class); // 实例化Intent it.putExtra("myinfo", "北京魔乐科技软件学院(www.mldnjava.cn)") ; // 附加信息 Send.this.startActivityForResult(it, 1); // 启动Activity } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (resultCode) { // 判断操作类型 case RESULT_OK: // 成功操作 msg.setText("返回的内容是:" + data.getStringExtra("retmsg")); break; case RESULT_CANCELED: // 取消操作 msg.setText("操作取消。"); break ; default: break; } } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/MyLayout" ? 布局管理器ID,程序中使用 android:orientation="vertical" ? 所有组件垂直摆放 android:layout_width="fill_parent" ? 此布局管理器宽度为屏幕宽度 android:layout_height="fill_parent"> ? 此布局管理器高度为屏幕高度 <TextView ? 定义文本显示组件 android:id="@+id/show" ? 组件ID,程序中使用 android:layout_width="wrap_content" ? 组件宽度为文字宽度 android:layout_height="wrap_content"/> ? 组件高度为文字高度 <Button ? 定义按钮组件 android:id="@+id/retbut" ? 组件ID,程序中使用 android:layout_width="wrap_content" ? 组件宽度为文字宽度 android:layout_height="wrap_content" ? 组件高度为文字高度 android:text="返回数据到Send。"/> ? 默认显示文字 </LinearLayout>
public class Receive extends Activity { private TextView show = null ; // 文本显示组件 private Button retbut = null ; // 按钮组件 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.receive_main); // 调用默认布局管理器 this.show = (TextView) super.findViewById(R.id.show) ;// 取得组件 this.retbut = (Button) super.findViewById(R.id.retbut) ;// 取得组件 Intent it = super.getIntent() ; // 取得启动此程序的Intent String info = it.getStringExtra("myinfo") ; // 取得设置的附加信息 this.show.setText(info) ; // 设置文本显示信息 this.retbut.setOnClickListener(new OnClickListenerImpl()) ; // 设置监听 } private class OnClickListenerImpl implements OnClickListener { @Override public void onClick(View view) { Receive.this.getIntent().putExtra("retmsg", "老师:李兴华") ;// 返回信息 // 设置返回数据的状态,RESULT_OK与Send.java中的onActivityResult()里判断的对应 Receive.this.setResult(RESULT_OK, Receive.this.getIntent()) ; Receive.this.finish() ; // 结束Intent } } }