—— 你要悄悄拔尖,然后一鸣惊人。
上一篇我们讲了Intent的基本概念,现在我们通过一个实例来验证。
Intent传值
有这么一个场景,用户在登录页面输入用户名之后点击登录,跳转到另一个页面显示用户名名称。这个场景就是典型的Activity间Intent传值。下面我们开始编写代码:
| 1234567891011121314151617181920212223242526 | public class LoginActivity ``extends AppCompatActivity {`` ``private EditText etUsername;`` ``private Button btnLogin;`` ``@Override`` ``protected void onCreate(Bundle savedInstanceState) {`` ``super``.onCreate(savedInstanceState);`` ``setContentView(R.layout.activity_login);`` ``initView();`` ``}`` ``private void initView() {`` ``etUsername = findViewById(R.id.et_username);`` ``btnLogin = findViewById(R.id.btn_login);`` ``btnLogin.setOnClickListener(``new View.OnClickListener() {`` ``@Override`` ``public void onClick(View v) {`` ``Intent intent = ``new Intent(LoginActivity.``this``, MainActivity.``class``);`` ``intent.putExtra(``"username"``, etUsername.getText().toString());`` ``startActivity(intent);`` ``}`` ``});`` ``}``} |
|---|
| 1234567891011121314151617 | public class MainActivity ``extends AppCompatActivity {`` ``private TextView tvUsername;`` ``@Override`` ``protected void onCreate(Bundle savedInstanceState) {`` ``super``.onCreate(savedInstanceState);`` ``setContentView(R.layout.activity_main);`` ``initView();`` ``}`` ``private void initView() {`` ``tvUsername = findViewById(R.id.tv_username);`` ``tvUsername.setText(``"欢迎您 " + getIntent().getStringExtra(``"username"``));`` ``}``} |
|---|
在登录界面输入用户名之后,点击登录,通过startActivity跳转到主页面MainActivity,在MainActivity上通过getIntent()获取Intent传值。
Intent返回值给上一个Activity
另外还有这么一个场景,比如饿了么APP用户在首页选择用户所在城市,比如选择广州之后返回,首页显示广州了。这个场景就是典型Intent返回值给上一个Activity。下面我们开始编写代码:
| 1234567891011121314151617181920212223242526 | public class ChooseActivity ``extends AppCompatActivity {`` ``private TextView tvCity;`` ``@Override`` ``protected void onCreate(Bundle savedInstanceState) {`` ``super``.onCreate(savedInstanceState);`` ``setContentView(R.layout.activity_choose);`` ``tvCity = findViewById(R.id.tv_city);`` ``tvCity.setOnClickListener(``new View.OnClickListener() {`` ``@Override`` ``public void onClick(View v) {`` ``startActivityForResult(``new Intent(ChooseActivity.``this``, CityListViewActivity.``class``), ``101``);`` ``}`` ``});`` ``}`` ``@Override`` ``protected void onActivityResult(``int requestCode, ``int resultCode, ``@Nullable Intent data) {`` ``super``.onActivityResult(requestCode, resultCode, data);`` ``if (requestCode == ``101 && resultCode == RESULT_OK && data != ``null``) {`` ``tvCity.setText(data.getStringExtra(``"city"``));`` ``}`` ``}``} |
|---|
| 12345678910111213141516171819202122 | public class CityListViewActivity ``extends AppCompatActivity {`` ``@Override`` ``protected void onCreate(Bundle savedInstanceState) {`` ``super``.onCreate(savedInstanceState);`` ``setContentView(R.layout.activity_city);`` ``ListView listView = findViewById(R.id.listview);`` ``String[] data = {``"北京"``, ``"上海"``, ``"广东"``, ``"江西"``, ``"福建"``, ``"江苏"``, ``"山东"``, ``"浙江"``, ``"四川"``, ``"云南"``, ``"贵州"``, ``"黑龙江"``, ``"哈尔滨"``};`` ``ArrayAdapter<String> array = ``new ArrayAdapter<>(``this``, android.R.layout.simple_list_item_1, data);`` ``listView.setAdapter(array);`` ``listView.setOnItemClickListener(``new AdapterView.OnItemClickListener() {`` ``@Override`` ``public void onItemClick(AdapterView<?> parent, View view, ``int position, ``long id) {`` ``Intent intent = ``new Intent();`` ``intent.putExtra(``"city"``, data[position]);`` ``setResult(RESULT_OK, intent);`` ``finish();`` ``}`` ``});`` ``}``} |
|---|