欢迎光临散文网 会员登陆 & 注册

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

2023-01-28 14:55 作者:ChatGPT云炬学长  | 我要投稿

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

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

Intent传值

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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);
            }
        });
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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。下面我们开始编写代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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"));
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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();
            }
        });
    }
}

源码链接:https://yunjunet.cn/876800.html

Android开发学习教程(22)- Intent传值与startActivityForResult返回值的评论 (共 条)

分享到微博请遵守国家法律