Intent提供了一系列重载的putExtra(String name,String value)方法,通过该方法将要传递的数据暂存在Intent中,启动另一个Activity之后,只需将这些数据从Intent取出即可,Intent充当着一个“信鸽”的身份。
下面以一个注册用户信息的实例,进行详细讲解。
首先,需要两个Activity,注册界面MainActivity(左)与展示界面ShowActivity(右)(因为它不是重点,所以略丑…嘿嘿,界面代码也就不贴出来了)
下面分别是两个Activity实现数据传输和数据获取的代码,都有详细的注释。
//MainActivity.java
package com.example.lenovo.exampleoftextbook;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private EditText editText1;
private EditText editText2;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText1 = findViewById(R.id.editText1);
editText2 = findViewById(R.id.editText2);
button = (Button) findViewById(R.id.button);//18-21行完成与布局文件的连接
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
passDate();
}
});
}//onCreate函数
//传递数据
private void passDate() {
//创建Intent对象
Intent intent = new Intent(this,ShowActivity.class);
//将数据存入Intent对象
intent.putExtra("name",editText1.getText().toString().trim());
intent.putExtra("password",editText2.getText().toString().trim());
startActivity(intent);
}
}
//ShowActivity.java
package com.example.lenovo.exampleoftextbook;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class ShowActivity extends AppCompatActivity {
private TextView textView;
private TextView textView3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
Intent intent = getIntent();
//取出key对应的value值,这里的key相当于数据库中的主键
String name = intent.getStringExtra("name");
String password = intent.getStringExtra("password");
textView = (TextView)findViewById(R.id.textView);
textView3 = (TextView)findViewById(R.id.textView3);
textView.setText("用户名:"+ name);
textView3.setText("密码:"+ password);
}
}
运行结果就是刚开始展示的界面了,需要注意的是,getStringExtra()方法传入的参数必须与MainActivity中intent.putExtra()方法中传入的key值相同,否则就会返回NULL。而且这里传递的是字符串类型的数据,如果说传递的是整数类型的,就使用getIntExtra()方法,其他同理。
以上。