如何在 onClick 事件和 Activity 更改后将 textView 设置为可见?

How to set a textView to visible after an onClick event and Activity change?

我的滚动视图中有三个段落,需要在三个按钮之一上的 onclick 事件后每个段落都可见。

我目前已将它们设置为全部不可见。由于我无法让它工作,所以我只尝试使用其中的一段。

因此,我只为第一段创建了一个私有文本视图常量。但是在我传递了切换 activity 的意图之后,我还尝试将该包上的视图变为可见。

我已经包含了我的 MainActivity.java 和我用来设置不可见的 xml 文件。

package com.example.threebuttons;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView passage1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        passage1 = findViewById(R.id.passage_1);
    }

    public void launchPassageOne(View view) {
        passage1.setVisibility(view.VISIBLE);
        Intent intent = new Intent(this, PassageActivity.class);
        startActivity(intent) ;
    }

    public void launchPassageTwo(View view) {
        Intent intent = new Intent(this, PassageActivity.class);
        startActivity(intent) ;
    }

    public void launchPassageThree(View view) {
        Intent intent = new Intent(this, PassageActivity.class);
        startActivity(intent) ;
    }
}

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".PassageActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/passage_1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:gravity="start|top"
                android:inputType="textMultiLine"
                android:text="@string/passage1"
                android:visibility="invisible"/>

            <EditText
                android:id="@+id/passage_2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:gravity="start|top"
                android:inputType="textMultiLine"
                android:text="@string/passage2"
                android:visibility="invisible"/>

            <EditText
                android:id="@+id/passage_3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:gravity="start|top"
                android:inputType="textMultiLine"
                android:text="@string/passage3"
                android:visibility="invisible"/>

        </LinearLayout>
    </ScrollView>

</androidx.constraintlayout.widget.ConstraintLayout>

我的程序崩溃了。而且我找不到任何错误消息。

如何在我希望 activity 更改时使包可见? 有三个段落,我希望每个段落都对相应的按钮可见,然后在按下后退按钮时变为不可见。

passage1.setVisibility(View.VISIBLE)

在此处详细了解视图以及如何修改它们的行为: https://developer.android.com/reference/android/view/View

使用View.VISIBLE,大写V,它是来自视图class的整数常量。从方法 launchPassageOne:

中删除 View 参数
public void launchPassageOne() {
    passage1.setVisibility(View.VISIBLE);
    Intent intent = new Intent(this, PassageActivity.class);
    startActivity(intent) ;
}

它接缝的三个视图都在开始activity。因此您无法更改它们的可见性,因为它们尚未创建。

在开始之前添加这个 activity intent.putExtra("passageNum", 1) 然后调用 startActivity(intent)

在 PassageAactivity onCreate 中执行以下操作:

If (getIntent().hasExtra("passageNum") && getIntent().getExtras().getInt("passageNum") == 1)
    passage1.setVisibility(View.VISIBLE)

其他观点依此类推

Image click here无论我对您的代码的理解如何,我都知道您没有在 On create 中初始化您的方法,在 On create 之外定义的任何内容都不会被使用,直到或除非从 On create 方法内部调用。 设计一些代码可以帮助您更好地理解。 在下面的代码中,我使文本视图可滚动,但只有在文本太长而无法填满整个文本视图时才能滚动。 MainActivity.java

package com.example.threebuttons;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    EditText edit1;
    EditText edit2;
    EditText edit3;

    Button btn1;
    Button btn2;
    Button btn3;
    Button btnV;
    Button btnI;

    TextView t1;
    TextView t2;
    TextView t3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


            // defining id for edit texts
            edit1=findViewById(R.id.passage_1);
            edit2=findViewById(R.id.passage_2);
            edit3=findViewById(R.id.passage_3);

            // defining id for buttons
            btn1=findViewById(R.id.button_1);
            btn2=findViewById(R.id.button_2);
            btn3=findViewById(R.id.button_3);
            btnV=findViewById(R.id.btnvisi);
            btnI=findViewById(R.id.btninvisi);

            // defining id for text views
            t1=findViewById(R.id.textview1);
            t2=findViewById(R.id.textview2);
            t3=findViewById(R.id.textview3);

            // making text views scrollable

            t1.setMovementMethod(new ScrollingMovementMethod());
            t2.setMovementMethod(new ScrollingMovementMethod());
            t3.setMovementMethod(new ScrollingMovementMethod());

            btn1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    t1.setText(edit1.getText().toString());

                }
            });
            btn2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    t2.setText(edit2.getText().toString());
                }
            });

            btn3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    t3.setText(edit3.getText().toString());

                }
            });

            btnV.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    //Making passages Visible
                    t1.setVisibility(View.VISIBLE);
                    t2.setVisibility(View.VISIBLE);
                    t3.setVisibility(View.VISIBLE);
                }
            });

            btnI.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    t1.setVisibility(View.INVISIBLE);
                    t2.setVisibility(View.INVISIBLE);
                    t3.setVisibility(View.INVISIBLE);

                }
            });

    }
}

设置activitymain.xml如下

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#2196F3"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/passage_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:ems="10"
        android:hint="passage 1"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.043"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.016" />

    <EditText
        android:id="@+id/passage_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:ems="10"
        android:hint="Passage 2"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.043"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.102" />

    <EditText
        android:id="@+id/passage_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:ems="10"
        android:hint="Passage 3"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.043"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.194" />

    <Button
        android:id="@+id/button_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/passage_2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/passage_1"
        app:layout_constraintTop_toTopOf="@+id/passage_1" />

    <Button
        android:id="@+id/button_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:text="Button"
        app:layout_constraintBottom_toTopOf="@+id/passage_3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/passage_2"
        app:layout_constraintTop_toTopOf="@+id/passage_2" />

    <Button
        android:id="@+id/button_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:text="Button"
        app:layout_constraintBottom_toBottomOf="@+id/passage_3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/passage_3"
        app:layout_constraintTop_toTopOf="@+id/passage_3" />

    <TextView
        android:id="@+id/textview1"
        android:layout_width="319dp"
        android:layout_height="74dp"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:background="#3F51B5"
        android:hint="Passage 1"
        android:scrollbars="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.486"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.446"
        tools:visibility="invisible" />

    <TextView
        android:id="@+id/textview2"
        android:layout_width="319dp"
        android:layout_height="74dp"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:background="#3F51B5"
        android:hint="Passage 2"
        android:scrollbars="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.672"
        tools:visibility="invisible" />

    <TextView
        android:id="@+id/textview3"
        android:layout_width="319dp"
        android:layout_height="74dp"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:background="#3F51B5"
        android:hint="Passage 3"
        android:scrollbars="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.486"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.895"
        tools:visibility="invisible" />

    <Button
        android:id="@+id/btnvisi"
        android:layout_width="175dp"
        android:layout_height="44dp"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:text="Passage Visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.036"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.299" />

    <Button
        android:id="@+id/btninvisi"
        android:layout_width="174dp"
        android:layout_height="47dp"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:text="passage invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.886"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.3" />
</androidx.constraintlayout.widget.ConstraintLayout>

我希望它能让你更好地理解, 谢谢