教你如何使用Android onActivityResult

此处借鉴http://blog.csdn.net/zd_1471278687/article/details/11567225博主的介绍

在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult。

<1>startActivityForResult(Intent intent, int requestCode);

第一个参数:一个Intent对象

第二个参数:如果> = 0,当Activity结束时requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回

<2>onActivityResult(int requestCode, int resultCode, Intent data)

第一个参数:这个整数requestCode提供给onActivityResult,是以便确认返回的数据是从哪个Activity返回的。

           这个requestCode和startActivityForResult中的requestCode相对应。

第二个参数:这整数resultCode是由子Activity通过其setResult()方法返回。


第三个参数:一个Intent对象,带有返回的数据。

<3>setResult(int resultCode, Intent data)

调用这个方法把Activity想要返回的数据返回到父Activity

第一个参数:当Activity结束时resultCode将归还在onActivityResult()中,一般为RESULT_CANCELED , RESULT_OK。

第二个参数:一个Intent对象,返回给父Activity的数据。


总共三个页面 主页:MainActivity    子页:OneActivity 、TwoActivity。

MainActivity 点击按钮跳转到 OneActivity 。 OneActivity点击返回 关闭本页面 传值到MainActivity  TextView 显示传值内容 



package com.example.demoonactivityresult;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.app.Activity;
import android.content.Intent;

public class MainActivity extends Activity {


private Button butone,buttwo;
private TextView textView;
private static final int codeone=101;
private static final int codetwo=102;

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


    private void initView(){
    butone=(Button)findViewById(R.id.butone);
    buttwo=(Button)findViewById(R.id.buttwo);
    textView=(TextView)findViewById(R.id.main_tag);
   
    butone.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View view) {
Intent intentone=new Intent(MainActivity.this, OneActivity.class);
String content="主页传到第一个页面的内容";
intentone.putExtra("mainone", content);
startActivityForResult(intentone, codeone);
}
});
   
    buttwo.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View view) {
Intent intenttwo=new Intent(MainActivity.this, TwoActivity.class);
String contentt="主页传到第二个页面的内容";
intenttwo.putExtra("maintwo", contentt);
startActivityForResult(intenttwo, codetwo);
}
});
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
    switch (requestCode) {
case codeone:
Bundle bundle=data.getExtras();
//获取第一个页面传过来的值
String bundleContent=bundle.getString("onevalue");
textView.setText(bundleContent);
break;
case codetwo:
Bundle bundlee=data.getExtras();
//获取第二个页面传过来的值
String bundleContentt=bundlee.getString("twovalue");
textView.setText(bundleContentt);
break;
default:
break;
}
    }
   
}


package com.example.demoonactivityresult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;


public class OneActivity extends Activity{

private Button button;
private TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.one_activity);
initView();
}


private void initView(){
button=(Button)findViewById(R.id.but_one_back);
textView=(TextView)findViewById(R.id.one_tag);
Intent intent=getIntent();
String intentcon=intent.getStringExtra("mainone");
textView.setText(intentcon);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Intent intent=new Intent(OneActivity.this, MainActivity.class);
String content="第一个页面返回主页的值";
intent.putExtra("onevalue", content);
setResult(RESULT_OK, intent);
finish();
}
});
}
}

package com.example.demoonactivityresult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;


public class TwoActivity extends Activity{

private Button button;
private TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.two_activity);
initView();
}


private void initView(){
button=(Button)findViewById(R.id.but_two_back);
textView=(TextView)findViewById(R.id.one_tag);
Intent intent=getIntent();
String intentcon=intent.getStringExtra("maintwo");
textView.setText(intentcon);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Intent intent=new Intent(TwoActivity.this, MainActivity.class);
String content="第二个页面返回主页的值";
intent.putExtra("twovalue", content);
setResult(RESULT_OK, intent);
finish();
}
});
}


}













  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值