参考链接: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();
}
};
}