Android Studio中两Activity间多按钮与多TextView的对应跳转实现
嘿,我来帮你搞定这个按钮对应TextView的问题!其实核心就是通过Intent给第二个Activity传递一个标识,让它知道该显示哪个TextView就行,具体步骤和代码我给你写清楚:
解决步骤
1. 配置第一个Activity(MainActivity)
首先在你的MainActivity里,给三个按钮分别设置点击事件,点击时通过Intent携带一个区分按钮的参数,传递到第二个Activity。
Java 代码示例:
import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn1 = findViewById(R.id.button1); Button btn2 = findViewById(R.id.button2); Button btn3 = findViewById(R.id.button3); // 按钮1点击事件 btn1.setOnClickListener(v -> { Intent intent = new Intent(MainActivity.this, DetailActivity.class); intent.putExtra("selected_id", 1); // 传递标识1 startActivity(intent); }); // 按钮2点击事件 btn2.setOnClickListener(v -> { Intent intent = new Intent(MainActivity.this, DetailActivity.class); intent.putExtra("selected_id", 2); // 传递标识2 startActivity(intent); }); // 按钮3点击事件 btn3.setOnClickListener(v -> { Intent intent = new Intent(MainActivity.this, DetailActivity.class); intent.putExtra("selected_id", 3); // 传递标识3 startActivity(intent); }); } }
Kotlin 代码示例:
import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val btn1 = findViewById<Button>(R.id.button1) val btn2 = findViewById<Button>(R.id.button2) val btn3 = findViewById<Button>(R.id.button3) btn1.setOnClickListener { val intent = Intent(this, DetailActivity::class.java) intent.putExtra("selected_id", 1) startActivity(intent) } btn2.setOnClickListener { val intent = Intent(this, DetailActivity::class.java) intent.putExtra("selected_id", 2) startActivity(intent) } btn3.setOnClickListener { val intent = Intent(this, DetailActivity::class.java) intent.putExtra("selected_id", 3) startActivity(intent) } } }
2. 配置第二个Activity(DetailActivity)
接下来在DetailActivity里接收传递过来的标识,根据标识显示对应的TextView,同时隐藏另外两个。
Java 代码示例:
import android.content.Intent; import android.os.Bundle; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class DetailActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); TextView tv1 = findViewById(R.id.textView1); TextView tv2 = findViewById(R.id.textView2); TextView tv3 = findViewById(R.id.textView3); // 获取Intent中的参数,默认值设为1防止无传参情况 Intent intent = getIntent(); int selectedId = intent.getIntExtra("selected_id", 1); // 根据标识切换TextView显示状态 switch (selectedId) { case 1: tv1.setVisibility(View.VISIBLE); tv2.setVisibility(View.GONE); tv3.setVisibility(View.GONE); break; case 2: tv1.setVisibility(View.GONE); tv2.setVisibility(View.VISIBLE); tv3.setVisibility(View.GONE); break; case 3: tv1.setVisibility(View.GONE); tv2.setVisibility(View.GONE); tv3.setVisibility(View.VISIBLE); break; default: tv1.setVisibility(View.VISIBLE); tv2.setVisibility(View.GONE); tv3.setVisibility(View.GONE); } } }
Kotlin 代码示例:
import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.TextView import android.view.View class DetailActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_detail) val tv1 = findViewById<TextView>(R.id.textView1) val tv2 = findViewById<TextView>(R.id.textView2) val tv3 = findViewById<TextView>(R.id.textView3) val selectedId = intent.getIntExtra("selected_id", 1) when(selectedId) { 1 -> { tv1.visibility = View.VISIBLE tv2.visibility = View.GONE tv3.visibility = View.GONE } 2 -> { tv1.visibility = View.GONE tv2.visibility = View.VISIBLE tv3.visibility = View.GONE } 3 -> { tv1.visibility = View.GONE tv2.visibility = View.GONE tv3.visibility = View.VISIBLE } else -> { tv1.visibility = View.VISIBLE tv2.visibility = View.GONE tv3.visibility = View.GONE } } } }
3. 关键注意事项
- 确保你已经在
AndroidManifest.xml中注册了DetailActivity,示例代码如下:
<activity android:name=".DetailActivity" />
- 布局文件里的Button和TextView的id要和代码中的完全对应,比如
button1、textView1这类命名别写错。 GONE和INVISIBLE的区别:GONE是完全隐藏且不占布局空间,INVISIBLE是隐藏但仍占据原有空间,可根据你的布局需求选择。
这样修改后,点击不同的按钮,第二个Activity就会精准显示对应的TextView啦!
内容的提问来源于stack exchange,提问作者Segloplanet
相关产品推荐
相关产品推荐

