我们一般传递数据是用Intent的,这个也是官方的推荐的,但Intent不能传递那些不能系列化的对象。
为了解决这个问题,我们可以用静态变量来传递数据。
在目标activity中声明静态变量,但必须是public修饰的。
public class OtherActivity extends Activity {
//定义静态变量
public static String name;
public static int age;
private TextView textview;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
textview = (TextView)findViewById(R.id.msg);
textview.setText("name: "+name+"\n"+"age: "+age);
}
}
在其他activity中可以直接使用静态变量传递数据给目标activity:
public class MainActivity extends Activity {
private Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)this.findViewById(R.id.st);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
OtherActivity.name="mayi";//直接调用静态变量
OtherActivity.age=23;
startActivity(intent);
}
});
}
}