Android入门问题:如何将Activity One输入的通知消息显示到Activity Two
嘿,作为Android新手,你这个需求其实很基础也很常见,我来一步步帮你搞定~
实现步骤详解
第一步:完善Activity One的代码(发送数据到Activity Two)
你的代码片段里用了getIntent(),这其实是用来接收其他页面传过来的数据的,但你现在需要的是从Activity One把输入的消息传给Activity Two,所以得改成发送数据的逻辑。假设你在Activity One里有输入框用来输入通知标题和消息,先从布局和代码两部分调整:
1.1 Activity One的布局(activity_one.xml)
先加输入框和跳转按钮:
<EditText android:id="@+id/et_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="输入通知标题"/> <EditText android:id="@+id/et_message" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="输入通知消息"/> <Button android:id="@+id/btn_send" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="跳转到Activity Two"/>
1.2 Activity One的Java代码
处理按钮点击事件,把输入的内容传到Activity Two:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_one); // 获取输入框和按钮实例 EditText etTitle = findViewById(R.id.et_title); EditText etMessage = findViewById(R.id.et_message); Button btnSend = findViewById(R.id.btn_send); btnSend.setOnClickListener(v -> { // 获取用户输入的内容,trim()去掉首尾空格 String title = etTitle.getText().toString().trim(); String message = etMessage.getText().toString().trim(); // 创建跳转Intent,指定目标页面是ActivityTwo Intent intent = new Intent(ActivityOne.this, ActivityTwo.class); // 把数据存入Intent,key要记好,后面接收时要用相同的key intent.putExtra("EXTRA_TITLE", title); intent.putExtra("EXTRA_MESSAGE", message); // 启动ActivityTwo startActivity(intent); }); }
第二步:编写Activity Two的代码(接收并显示数据)
接下来在Activity Two里接收数据,然后显示到TextView上:
2.1 Activity Two的布局(activity_two.xml)
添加用来展示内容的TextView:
<TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:textStyle="bold"/> <TextView android:id="@+id/tv_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:layout_marginTop="16dp"/>
2.2 Activity Two的Java代码
接收Intent里的数据并显示:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_two); // 获取跳转过来的Intent Intent intent = getIntent(); // 用和发送时一致的key取数据,加默认值避免空指针 String title = intent.getStringExtra("EXTRA_TITLE") == null ? "无标题" : intent.getStringExtra("EXTRA_TITLE"); String message = intent.getStringExtra("EXTRA_MESSAGE") == null ? "无消息" : intent.getStringExtra("EXTRA_MESSAGE"); // 把数据显示到TextView上 TextView tvTitle = findViewById(R.id.tv_title); TextView tvMessage = findViewById(R.id.tv_message); tvTitle.setText(title); tvMessage.setText(message); // 也可以把标题设置为页面标题 setTitle(title); }
几个关键注意事项
- 一定要在
AndroidManifest.xml里注册Activity Two,不然启动时会崩溃:
<activity android:name=".ActivityTwo"/>
- 传数据的key(比如
EXTRA_TITLE)建议用常量定义,避免拼写错误,比如在Activity One里加:public static final String EXTRA_TITLE = "extra_title"; - 可以加个非空判断,如果用户没输入内容就点击按钮,弹出Toast提示用户输入。
这样就能实现你想要的功能啦,从Activity One输入内容,点击按钮跳转到Activity Two就能看到显示的消息了~
内容的提问来源于stack exchange,提问作者Doblist Doblist
相关产品推荐
相关产品推荐

