1.主Activity,用于启动另一个Activity()
public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("onCreate"); findViewById(R.id.btnStartBAct).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,BActivity.class);
intent.putExtra("data","Hello Henry"); //进行参数传递
//startActivity(new Intent(MainActivity.this,BActivity.class));
startActivity(intent);
}
});
} @Override
protected void onStart()
{
super.onStart();
System.out.println("onStrart");
}
@Override
protected void onRestart()
{
super.onRestart();
System.out.println("onRestart");
}
@Override
protected void onStop()
{
super.onStart();
System.out.println("onStop");
}
@Override
protected void onResume()
{
super.onResume();
System.out.println("onResume");
}
@Override
protected void onPause()
{
super.onPause();
System.out.println("onPause");
}
@Override
protected void onDestroy()
{
super.onDestroy();
System.out.println("onDestroy");
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId(); //noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
} return super.onOptionsItemSelected(item);
}
}
2.从Activity 被MainActivity启动
public class BActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
System.out.println("B onCreate"); Intent intent=getIntent(); //获取MainActivity传递过来的Intent TextView tv= (TextView) findViewById(R.id.tv);
tv.setText(intent.getStringExtra("data")); //调用Intent的getStringExtra("data")方法取出数据
    }

    @Override
protected void onStart()
{
super.onStart();
System.out.println("B onStrart");
}
@Override
protected void onRestart()
{
super.onRestart();
System.out.println("B onRestart");
}
@Override
protected void onStop()
{
super.onStart();
System.out.println("B onStop");
}
@Override
protected void onResume()
{
super.onResume();
System.out.println("B onResume");
}
@Override
protected void onPause()
{
super.onPause();
System.out.println("B onPause");
}
@Override
protected void onDestroy()
{
super.onDestroy();
System.out.println("B onDestroy");
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_b, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId(); //noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
} return super.onOptionsItemSelected(item);
}
}
3.传递数据包Bundle
3.1 MainActivity中的 findViewById(R.id.btnStartBAct).setOnClickListener(new View.OnClickListener() {
        @Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,BActivity.class);
//intent.putExtra("data","Hello Henry"); //传递数据包
Bundle bundle=new Bundle();
bundle.putString("name","henry"); //往数据包中添加数据
bundle.putInt("age",24);
intent.putExtras(bundle); //将数据包添加到Intent中 //startActivity(new Intent(MainActivity.this,BActivity.class));
startActivity(intent);
}
});
}
3.2 BActivity中的
Intent intent=getIntent();
Bundle bundle=intent.getExtras(); //接收数据包 TextView tv= (TextView) findViewById(R.id.tv);
//tv.setText(intent.getStringExtra("data"));
tv.setText(String.format("name=%s,age=%d",bundle.getString("name"),(int)bundle.get("age"))); //调用Bundle的getXXX()函数获取数据
4.传递引用
4.1使用序列化的方式传递引用类
自定义类:
public class User implements Serializable {        //使用java提供的序列化的方式   
private String name;
private int age; public void setName(String name) {
this.name = name;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public int getAge() {
return age;
}
public User(String name,int age)
{
this.name=name;
this.age=age;
}
}
主Activity:
public class MainActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); findViewById(R.id.btnStartBAct).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,BActivity.class); intent.putExtra("user", (Serializable) new User("henryQL",24)); //添加自定义的引用类的对象
startActivity(intent);
}
});
} }
被调用的Activity:
public class BActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b); Intent intent=getIntent();
User user= (User) intent.getSerializableExtra("user"); //获取序列化的数据 TextView tv= (TextView) findViewById(R.id.tv);
tv.setText(String.format("nmae=%s,age=%d",user.getName(),user.getAge()));
}
}
4.2 使用Android提供的Parcelable接口
public class User implements Parcelable {
private String name;
private int age; public void setName(String name) {
this.name = name;
} public void setAge(int age) {
this.age = age;
} public String getName() {
return name;
} public int getAge() {
return age;
}
public User(String name,int age)
{
this.name=name;
this.age=age;
} @Override
public int describeContents() {
return 0;
} @Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(getName());
parcel.writeInt(getAge());
} public static final Parcelable.Creator<User> CREATOR=new Parcelable.Creator<User>() //必须命名为CREATOR
{ @Override
public User createFromParcel(Parcel parcel) {
return new User(parcel.readString(),parcel.readInt());
} @Override
public User[] newArray(int i) {
return new User[i];
}
};
}
public class MainActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("onCreate"); findViewById(R.id.btnStartBAct).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(MainActivity.this,BActivity.class); intent.putExtra("user",new User("Qianlong",24)); //startActivity(new Intent(MainActivity.this,BActivity.class));
startActivity(intent);
}
});
}
}
public class BActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
System.out.println("B onCreate"); Intent intent=getIntent();
User user=intent.getParcelableExtra("user"); //获取Parcelable对象 TextView tv= (TextView) findViewById(R.id.tv);
//tv.setText(intent.getStringExtra("data"));
//tv.setText(String.format("name=%s,age=%d",bundle.getString("name"),(int)bundle.get("age")));
tv.setText(String.format("nmae=%s,age=%d",user.getName(),user.getAge()));
}
}
5.Activity传递返回参数
若想打开一个新的Activity的时候能够获取其返回的参数,必须使用startActivityForResult,而不能是之前的startActivity函数了;
此外必须在该类中重写函数onActivityResult,在该函数中用来响应返回的数据。在新的Activity中使用setRequest来发送要返回的数据,并使用finish函数来结束当前的Activity。
public class MainActivity extends Activity {

    private TextView rtnTextView;

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); rtnTextView= (TextView) findViewById(R.id.rtnTextView); findViewById(R.id.newActivityBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//发送数据,并且能够获取另一activity的返回数据
Intent intent=new Intent(MainActivity.this,MainActivity2Activity.class);
intent.putExtra("name","henry");
intent.putExtra("age",24);
startActivityForResult(intent,1); //第二个参数是请求码,设置请求码和要发送的intent数据
}
}); } //响应MainActivity2Activity的返回数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
rtnTextView.setText(data.getStringExtra("data")); //获取返回的数据
}
}
public class MainActivity2Activity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity2); TextView tv=(TextView)findViewById(R.id.displayTextView);
Intent intent=getIntent();
tv.setText(String.format("name=%s,age=%d",intent.getStringExtra("name"),intent.getIntExtra("age",0))); //传递返回值
final EditText editText=(EditText)findViewById(R.id.editText);
findViewById(R.id.returnBtn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1=new Intent();
intent1.putExtra("data",editText.getText().toString());
setResult(1,intent1); //设置返回码,和要返回的Intent
finish();
}
});
}
}
 
												

(一)Activity参数传递的更多相关文章

  1. Activity参数传递

    简单数据传递 putExtra() 传递 findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Over ...

  2. android脚步---不同activity之间参数传递

    现在有两个activity,一个是mainactivity,一个是detectactivity 后者需要调用前者的一个参数,这里用到了intent  getextras(); putextras(); ...

  3. Activity生命周期,切换,参数传递,bundle(包),值对象,Activity参数返回,Activity的启动模式

    Activity代表手机屏幕的一屏,或是平板电脑中的一个窗口.它是android应用中最重要的组成单元之一,提供了和用户交互的可视化界面.在一个Activity中,可以添加很多组件,这些组件负责具体的 ...

  4. Android学习笔记_16_添加多个Activity、参数传递、请求码和结果码使用

    一.添加新的Activity步骤: 第一步:新建一个继承Activity的类,如:NewActivity public class NewActivity extends Activity { @Ov ...

  5. Fragment的创建以及与activity的参数传递

    点击下面不同的TextView变化不同的Fragment avtivity与Fragment之间传递消息不能使用构造器传递,用bunder传递 首先写一个含有FrameLayout(这个布局最佳),里 ...

  6. Android:Activity之间跳转和参数传递

    一个activity就好比一个网页,此文章讲解怎样创建一个activity并且实现跳转! 一.学习创建Activity 1.新建一个java类,右击src目录,选择new-->class,新的a ...

  7. 【Android基础】Activity之间进行参数传递的三种方式

    1.使用Intent进行传输 //发送数据的Activity class button implements OnClickListener{ @Override public void onClic ...

  8. 33_为应用添加多个Activity与参数传递

    1\ 2\ 3\ 4\ 2 3

  9. Fragments之间的交互(实现参数传递)

    Fragments之间的交互(实现参数传递) 日常开发中,通常Fragments之间可能需要交互,比如基于用户事件改变Fragment的内容.所有Fragment之间的交互需要通过他们关联的Activ ...

随机推荐

  1. jQuery 文本框得失焦点应用

    一.文本框得失焦点一种是改变文本框的样式    得到焦点:               失去焦点: 二.文本框得失焦点另一种是改变文本框的值    得到焦点:     失去焦点:       三.jQ ...

  2. java下管道流 PipedOutputStream 与PipedInputStream

    package cn.stat.p2.demo; import java.io.IOException; import java.io.PipedInputStream; import java.io ...

  3. uva 688 - Mobile Phone Coverage

    经典问题,矩形面积并. 解法:一.矩形分割,每个矩形的两个横坐标和两个纵坐标排序,这样得到2n*2n个区间,对这些区间依次判断是否包含在n个矩形中间即可.      二.扫描线.具体还没实现过. 详见 ...

  4. 转载自php 大牛的学习计划 人生规划

    2012年偶决定开始写博客了,不为别的,就希望可以通过博客记录我的成长历程同时也希望可以帮助一些刚毕业,刚入行业的兄弟姐们们.我们是一群充满浮躁.抱怨.迷茫的程序猿,想一想3年就这么过去了,社会变得更 ...

  5. JS中的phototype是JS中比较难理解的一个部分

    本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个类B,这个类是以A为原型的,并且能进行扩展.我们称B的原 ...

  6. SDWebImage 官方文档

    API documentation is available at CocoaDocs - SDWebImage Using UIImageView+WebCache category with UI ...

  7. javascript学习笔记——chrome等提示找不到“getElementsByTagName”的一种解决方法

    最近学习是写了一个小网页,前台有个下拉框是通过后天的xml配置的,在写好代码后使用发现在IE9以及之前的IE浏览器都可以正常获取,但是IE10,chrome和firefox都会在获取一个标签时报get ...

  8. 鼠标键盘无法进入:(EE) config/hal: couldn’t initialise context: (null)

    vi /var/log/Xorg.0.log 发现有一行:(EE) config/hal: couldn’t initialise context: (null) 在xorg.conf里面加上下面选项 ...

  9. Linux生成core文件、core文件路径设置

    在Linux下产生并调试core文件 先看看我用的是个什么机器: $ uname -aLinux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT ...

  10. jquery判断checkbox是否选中

    $('input:checkbox').click(function () { if ($("#chkPile").is(":checked")) { $(); ...