Android 启动其他Activity并返回结果

实现从一个Activity跳转到第二个Acitivity,返回结果在第一个Activity中显示。

先给出关键代码:

class MainActivityextends Activity

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt2 = (Button) findViewById(R.id.button2);
textView = (TextView)findViewById(R.id.textView1);
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(MainActivity.this,ThridIntent.class);
Bundle bundle = new Bundle();
startActivityForResult(intent,200);
}
});
}


@Override
protected voidonActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 200 && resultCode == 200){
String string = data.getStringExtra("check");
textView.setText(string);
}
}


class ThridIntent extends Activity:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thrid_intent);
radioGroup = (RadioGroup)findViewById(R.id.radioGroup1);
//单选按钮改变事件
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup arg0, int arg1) {
Intent intent = getIntent();
RadioButton radioButton=(RadioButton) findViewById(radioGroup.getCheckedRadioButtonId());
String string = (String)radioButton.getText();
intent.putExtra("check", string);
setResult(200,intent);
finish();
}
});
}

代码说明:

启动、关闭Activity:

Activity启动其他Activity有如下两个方法:

startActivity(Intent intent) :启动其他Activity。

startActivityForResult(Intent intent,int requestCode):以指定的请求码requestCode启动Activity,而且程序会等到新启动Activity的结果(通过重写onActivityResult(..))方法来获取。

关闭Activity:

finish():结束当前Activity。

finishActivity(int requestCode):结束以startActivityForResult(Intent intent,int requestCode)方法启动的Activity。

使用Bundle在Activity之间交换数据:

Intent提供了多个重载的方法来“携带”额外的数据包:

putExtras(Bundle data):向Intent中放入需要“携带”的数据包。

Bundle getExtras():取出Intent所“携带”的数据包

putExtra(String name,Xxx value):向Intent中按key—value对的形式存入数据。

getXxxExtra(String name):从Intent中按key取出指定类型的数据。

上面方法中的Bundle就是一个简单的数据携带包,该Bundle对象包含了多个方法来存入数据和取出数据。

Bundle相关方法:

putXxx(String,Xxx data):向Bundle放入Int,Long等各种类型的数据

putSerializable(String,Serializable data):向Bundle中放入一个可序列化的对象

getXxx(String key):从Bundle取出Int,Long等各种类型的数据

getSerializable(String key,Serializable data):从Bundle取出一个可序列化的对象


activity_main.xml :

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_marginLeft="43dp"
android:layout_toRightOf="@+id/button1"
android:text="跳转返回结果" />

activity_thrid_intent.xml :

<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="14dp" >

<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="RadioButton1" />

<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton2" />

<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="RadioButton3" />
</RadioGroup>


AndroidManifest.xml:

<activity
android:name="com.coslay.intenttest.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity
android:name="com.coslay.intenttest.ThridIntent"
android:label="@string/title_activity_thrid_intent" >
</activity>


代码说明:

配置Activity时通常指定如下属性:

name:指定该Activity的实现类的类名

icon:指定该Activity对应的图标

label:指定该Activity的标签

exported:指定该Activity是否允许被其他应用调用。如果将该属性设为true,那么该Activity将可以被其他应用调用。

launchMode:指定该Activity的加载模式,该属性支持standard,singleTop,singleTask,和singleInstance

除此之外,配置Activity时通常需要指定一个或多个<intent_fiilter.../>元素,该元素用于指定该Activity可响应的Intent。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值