Android 学习之路 1:如何在Activity之间传递数据

传递数据新建 Activity

在项目中右键,选择 New,继续选择中下方的 Activity,最后是 Blank Activity。

此时 Android Studio 会为我们自动添加一个对应的布局文件,为布局文件中的 TextView 添加 ID,以便后续使用。

用Intent 发送数据

在主布局文件中新建一个 Button 控件,并在主类中定义它,然后为它设置 Click 的监听事件。

Button button;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {(View v) {Intent i = new Intent(MainActivity.this,Main2Activity.class);i.putExtra(“Thanks”,”Thank you for reading my blog.”);startActivity(i);}});}用 Intent 接收数据

接下来再之前创建的 Activity 中同样新建一个 Intent 进行接受即可。和发送试用的 putExtra 类似,接受也可以用 getStringExtra 。当然了,正对不同的数据类型可以用不同的方法。

private TextView tv;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);Intent i = getIntent();tv = (TextView)findViewById(R.id.tv);tv.setText(i.getStringExtra(“Thanks”));}传递 Bundle 包

在两个 Activity 之间也可以用 Bundle 包来进行数据的传递,相比上一种方式,这一种可以包含更多的数据,你可以将其认为是一个集合,这也正符合“包”的概念。

(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {(View v) {Intent i = new Intent(MainActivity.this,Main2Activity.class);Bundle a = new Bundle();a.putString(“Thanks”, “Thank you for reading my blog.”);Bundle b = new Bundle();b.putString(“Android”,”Google”);b.putString(“Windows”,”Microsoft”);a.putBundle(“bundle”,b);i.putExtras(a);startActivity(i);}});}根据相应的 Key 值获取相应的Bundle数据@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);Intent i = getIntent();Bundle a2 = i.getExtras();tv = (TextView)findViewById(R.id.tv);tv.setText(String.format(“%s Android属于%s,Windows属于%s”,a2.getString(“Thanks”),a2.getBundle(“bundle”).getString(“Android”),a2.getBundle(“bundle”).getString(“Windows”)));}传递自定义对象

Android 开发过程中自然少不了“类”了,那么这种数据又如何传输呢。

切记:一定要执行序列化,即加上“implements Serializable”{private int source;private String ID;() {return source;}(int source) {this.source = source;}public String getID() {return ID;}(String ID) {this.ID = ID;}public Source(String ID, int source) {this.source = source;this.ID = ID;}}

相应有了前面的了解,大家都可以直接猜到如何使用了,那我就不再啰嗦了。

(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {(View v) {Intent i = new Intent(MainActivity.this,Main2Activity.class);i.putExtra(“source”,new Source(“Player”,1000));startActivity(i);}});}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);Intent i = getIntent();Source s = (Source) i.getSerializableExtra(“source”);tv = (TextView) findViewById(R.id.tv);tv.setText(String.format(“ID是%s,得分是%d”,s.getID(), s.getSource()));}从Activity返回数据

用户需要与应用进行交互,应用需要将用户输入的数据进行返回,所以……

在主 Activity 中定义 Button 和 TextView,前者用于导航至次 Activity , 后者用于显示返回的数据。

在次 Activity 中定义 Button 和 EditText,前者用于确认并返回至主 Activity,后者用于用户输入。

在次 Activity 中:

private Button button ;private EditText editText;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);editText = (EditText)findViewById(R.id.editText);button = (Button)findViewById(R.id.button2);button.setOnClickListener(new View.OnClickListener() {(View v) {Intent i = new Intent();i.putExtra(“info”,editText.getText().toString());setResult(0, i); // 0表示成功finish();}});}即使爬到最高的山上,一次也只能脚踏实地地迈一步。

Android 学习之路 1:如何在Activity之间传递数据

相关文章:

你感兴趣的文章:

标签云: