Android开发学习教程(22)- Intent传值与startActivityForResult返回值

142 阅读2分钟

—— 你要悄悄拔尖,然后一鸣惊人。

上一篇我们讲了Intent的基本概念,现在我们通过一个实例来验证。

Intent传值

有这么一个场景,用户在登录页面输入用户名之后点击登录,跳转到另一个页面显示用户名名称。这个场景就是典型的Activity间Intent传值。下面我们开始编写代码:

1234567891011121314151617181920212223242526public 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);``            ``}``        ``});``    ``}``}
1234567891011121314151617public 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。下面我们开始编写代码:

1234567891011121314151617181920212223242526public 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"``));``        ``}``    ``}``}
12345678910111213141516171819202122public 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();``            ``}``        ``});``    ``}``}

**