我的 ScrollView 中有三个段落,在三个按钮之一上发生 onclick 事件后,每个段落都需要变得可见。
我目前已将它们设置为全部不可见。由于我无法让它发挥作用,我只是在其中一个段落中进行尝试。
因此,我仅为第一段创建了一个私有(private) TextView 常量。但是在我传递切换 Activity 的 Intent 后,我还尝试将该包上的 View 变为可见。
我已经包含了我的 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 时,如何才能使包可见? 我希望三个段落对于各自的按钮可见,然后在按下后退按钮时变为不可见。
最佳答案
这三个 View 似乎都在已启动的 Activity 中。因此您无法更改它们的可见性,因为它们尚未创建。
在开始 Activity 之前添加此内容
intent.putExtra("passageNum", 1)
然后调用startActivity(intent)
在 PassageAactivity onCreate 中执行以下操作:
If (getIntent().hasExtra("passageNum") && getIntent().getExtras().getInt("passageNum") == 1)
passage1.setVisibility(View.VISIBLE)
其他 View 依此类推
关于java - 如何在 onClick 事件和 Activity 更改后将 textView 设置为可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58018816/