Activity数据传递之基本数据类型 在这篇文章中,我写了通过putExtra()方法在activity之间传递基本数据类型
但是如果我们想传递对象还用这种方法会发现报错,因为putExtra()不能接收Obj对象类型的
就像下面这样 我们创建一个Obj对象
package com.example.activity;
public class Obj {
String name;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
}
如果还是像传递基本数据类型那样 我们看看
会报错,那么怎么解决呢 ?按着alt+/打开android的联想功能 我们会发现这个方法
putExtra(String name, Seralizable value)
putExtra可以传递可序列化的对象,所以我们只要在Obj类中实现这个接口就行了
下面附上运行结果
在这里只附上MainActivity OtherActivity Obj 三个类 其它的请打开这篇文章
MainActivity
package com.example.activity;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
Obj obj=new Obj();
obj.setName("我是苏苏");
intent.putExtra("姓名", obj);
startActivity(intent);
}
});
}
}
OtherActivity
package com.example.activity;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class OtherActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other);
Bundle bundle=getIntent().getExtras();
Obj obj=(Obj) bundle.get("姓名");
Toast.makeText(OtherActivity.this, obj.getName(), Toast.LENGTH_LONG).show();
}
}
Obj
package com.example.activity;
import java.io.Serializable;
public class Obj implements Serializable{
String name;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
}