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