startActivityForResult()的用法

参考链接:http://www.cnblogs.com/mubai/archive/2011/09/21/2183816.html

 

 

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

 

这里实例,主界面是:MainActivity;子模块:SecondAcitivity

 

MainAcitivity:

 

package com.test.intentdemo;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	private Button btn=null;
	public final static int REQUEST_CODE=1;
    
    public void onCreate(Bundle savedInstanceState)//onCreate方法用来初始化Activity实例对象
    {
        super.onCreate(savedInstanceState);//super.onCreate(savedInstanceState)的作用是调用其父类Activity的onCreate方法来实现对界面的图画绘制工作
        setContentView(R.layout.activity_main);//setContentView(R.layout.main)的作用是加载一个界面
        btn=(Button)findViewById(R.id.btn);
        btn.setOnClickListener(listener);
    }
    private View.OnClickListener listener=new View.OnClickListener()
	{
		
		@Override
		public void onClick(View v)
		{
//			Intent intent=new Intent();
//			intent.setAction(Intent.ACTION_SENDTO);
//			intent.setData(Uri.parse("smsto:5554"));
//			intent.putExtra("sms_body", "Hello!");//sms_body不能随意换成
//			startActivity(intent);
			Intent intent=new Intent();
			intent.setClass(MainActivity.this, SecondActivity.class);//从一个activity跳转到另一个activity
			intent.putExtra("str", "Intent Demo");//给intent假如额外数据,key为“str”,key值为"Intent Demo"
			//startActivity(intent);
			startActivityForResult(intent,REQUEST_CODE);//如果requestCode>=0,就会调用onActivityResult()
		}
	};
	
	protected void onActivityResult(int requestCode, int resultCode, Intent data) //requesCode用于标识对应于哪一个子模块,resultCode用于标识了子模块中哪一个intent携带的数据
	{
		if(requestCode==REQUEST_CODE)
		{
			switch(resultCode)
			{
			case SecondActivity.RESULT_CODE:
				Bundle bundle=data.getExtras();//不需要声明新的Intent对象,直接用data就可以,这里的data应该是SecondAcitivity传递过来的
				String str =bundle.getString("back");
				Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();
				break;
		    default:
					break;
			}
				
			
		}
	};
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }    
}

 

 

SecondAcitivity:

 

package com.test.intentdemo;

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

public class SecondActivity extends Activity
{
	private TextView secondTxt;
	private Button secondBtn;
	public final static int RESULT_CODE=1;

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		Intent intent=getIntent();//getIntent将该项目中包含的原始intent检索出来,将检索出来的intent赋值给一个Intent类型的变量intent
		Bundle bundle=intent.getExtras();//.getExtras()得到intent所附带的额外数据
		String str=bundle.getString("str");//getString()返回指定key的值
		secondTxt=(TextView)findViewById(R.id.secondTxt);//用TextView显示值
		secondTxt.setText(str);
		secondBtn=(Button)findViewById(R.id.btn2);
		secondBtn.setOnClickListener(listener);
		
	}
   private View.OnClickListener listener=new View.OnClickListener()
{
	
	@Override
	public void onClick(View v)
	{
		// TODO Auto-generated method stub
		Intent intent=new Intent(SecondActivity.this,MainActivity.class);
		intent.putExtra("back", "Back Data");
		setResult(RESULT_CODE, intent);//resultCode用于标识此intent
		finish();
		
	}
};
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值