You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:57:26