Andriod将数据返回给上一个活动(FourthActivity实现隐式Intent跳转)

第一个活动(MainActivity)

activity_main.xml文件

<!-- 输入框,将值传到SecondActivity活动进行显示 -->
<EditText
    android:id="@+id/etName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/btnStart2"
    android:layout_below="@+id/btnStart2"
    android:ems="10" >
    <requestFocus />
</EditText>

<!-- 启动活动2 -->
<Button
    android:id="@+id/btnStart2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="启动活动2"
    android:onClick="start2" />

<!-- 启动活动3 -->
<Button
    android:id="@+id/btnStart3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/etName"
    android:layout_below="@+id/etName"
    android:layout_marginTop="48dp"
    android:text="启动活动3" 
    android:onClick="start3"/>

MainActivity.java文件

/**
 * 跳转到SecondActivity活动中
 * 
 * @param v
 */
public void start2(View v) {
    String name = etName.getText().toString();

    // 准备意图
    Intent intent = new Intent(MainActivity.this, SecondActivity.class);
    intent.putExtra("name", name);
    // 出发(单程)
    // startActivity(intent);

    // 出发(往返),第一个参数是意图,第二个是请求码
    startActivityForResult(intent, 100);
}

/**
 * 跳转到ThirdActivity活动中
 * 
 * @param v
 */
public void start3(View v) {
    String name = etName.getText().toString();

    // 准备意图
    Intent intent = new Intent(MainActivity.this, ThirdActivity.class);
    intent.putExtra("name", name);
    // 出发(单程)
    // startActivity(intent);

    // 出发(往返),第一个参数是意图,第二个是请求码
    startActivityForResult(intent, 200);
}

/**
 * 隐式跳转到FourthActivity活动中
 * 
 * @param v
 */
public void start4(View v) {
    Intent intent=new Intent("com.example.activitytest");

    // 出发(往返),第一个参数是意图,第二个是请求码
    startActivityForResult(intent, 300);
}

/**
 * 重写Activity包的onActivityResult()方法 
 * requestCode 请求码
 *  resultCode 响应码 
 *  data 意图
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    //先switch请求码判断跳转到哪个Activity
    switch (requestCode) {
    case 100://显示跳转到SecondActivity活动中
        //知道跳转到哪个Activity之后根据响应码判断返回的是什么参数
        switch (resultCode) {
        case 10:
            // 10对应到SecondActivity活动中back1()方法中的响应码
            String data1 = data.getStringExtra("data1");
            Toast.makeText(MainActivity.this, data1, Toast.LENGTH_SHORT)
                    .show();
            break;

        case 20:
            // 20对应到SecondActivity活动中back2()方法中的响应码
            String data2 = data.getStringExtra("data2");
            Toast.makeText(MainActivity.this, data2, Toast.LENGTH_SHORT)
                    .show();
            break;
        }
        break;
    case 200://显示跳转到ThirdActivity活动中
        switch (resultCode) {
        case 30:
            // 30对应到ThirdActivity活动中back3()方法中的响应码
            String data3 = data.getStringExtra("data3");
            Toast.makeText(MainActivity.this, data3, Toast.LENGTH_SHORT)
                    .show();
            break;
        }
        break;
    case 300://隐式跳转到FourthActivity活动中
        switch (resultCode) {
        case 40:
            // 40对应到FourthActivity活动中back4()方法中的响应码
            String data4 = data.getStringExtra("data4");
            Toast.makeText(MainActivity.this, data4, Toast.LENGTH_SHORT)
                    .show();
            break;
        }
        break;
    default:
        break;
    }
}

第二个活动(SecondActivity)

activity_second.xml

<!-- 返回上一个活动MainActivity,第1种情况 -->
<Button
    android:id="@+id/btnBack1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/tvContent2"
    android:layout_below="@+id/tvContent2"
    android:layout_marginTop="27dp"
    android:text="第一种情况" 
    android:onClick="back1"/>

<!-- 返回上一个活动MainActivity,第2种情况 -->
<Button
    android:id="@+id/btnBack2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/btnBack1"
    android:layout_below="@+id/btnBack1"
    android:text="第二种情况" 
    android:onClick="back2"/>  

SecondActivity.java文件

private TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    //获取到文本框
    tv = (TextView) findViewById(R.id.tvContent2);
    //获取到从MainActivity活动传过来的值
    String name = getIntent().getStringExtra("name");
    //显示
    tv.setText(name);
}

/**
 * 第一种情况
 * @param v
 */
public void back1(View v) {
    Intent intent=new Intent();
    intent.putExtra("data1", "我是来自活动2的情况1");
    //第一个参数是响应码,第二个参数是要传的参数
    setResult(10, intent);
    //销毁当前活动
    finish();

}


/**
 * 第二种情况
 * @param v
 */
public void back2(View v) {
    Intent intent=new Intent();
    intent.putExtra("data2", "我是来自活动2的情况2");
    //第一个参数是响应码,第二个参数是要传的参数
    setResult(20, intent);
    //销毁当前活动
    finish();
}

第三个活动(ThirdActivity)

activity_third.xml文件

<!-- 返回上一个活动MainActivity -->
<Button
    android:id="@+id/btnBack3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_below="@+id/textView1"
    android:layout_marginTop="38dp"
    android:text="返回活动1" 
    android:onClick="back3"/> 

ThirdActivity.java文件

/**
 * 第三种情况
 * @param v
 */
public void back3(View v) {
    Intent intent=new Intent();
    intent.putExtra("data3", "我来自活动3");
    //第一个参数是响应码,第二个参数是要传的参数
    setResult(30, intent);
    //销毁当前活动
    finish();

}

第四个活动(FourthActivity,实现隐式Intent跳转)

AndroidManifest.xml配置文件

<activity
        android:name="com.example.activitydemo.FourthActivity"
        android:label="@string/title_activity_fourth" >

        <!-- 意图过滤器 -->
        <intent-filter>
            <action android:name="com.example.activitytest" />
            <!-- 将名字为com.example.activitytest的动作注册到系统中,只能被调用 -->
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

activity_fourth.xml文件

<Button
    android:id="@+id/btnBack4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/textView1"
    android:layout_below="@+id/textView1"
    android:layout_marginTop="56dp"
    android:text="返回活动1" 
    android:onClick="back4"/>

FourthActivity.java文件

/**
 * 第四种情况
 * @param v
 */
public void back4(View v) {
    Intent intent=new Intent();
    intent.putExtra("data4", "我来自活动4");
    //第一个参数是响应码,第二个参数是要传的参数
    setResult(40, intent);
    //销毁当前活动
    finish();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值