首页 > 解决方案 > set.Visibility(View.GONE) 没有使 Button 和 EditText 消失,它的出现就像我什至没有添加代码一样

问题描述

尝试进行两次登录,一次用于管理员,一次用于用户。它们共享相同的布局,但管理员有额外的文本字段和按钮来向菜单添加数据。因此,当使用用户凭据登录时,TextFields 和 Buttons 将是setVisibility(View.GONE),但它根本不起作用,实际上它显示出来就像setVisibility(View.GONE)添加了一样。任何意见,将不胜感激。

登录页面.java

DatabaseHelper myDB;
EditText LoginEMail;
EditText LoginPassword;
Button LoginBtn;

LinearLayout linearLayout;
View add_image;
View add_name;
View add_desc;
View add_data;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.loginpage);
    LoginEMail = findViewById(R.id.LoginEMail);
    LoginPassword = findViewById(R.id.LoginPassword);
    LoginBtn = findViewById(R.id.LoginBtn);
    myDB = new DatabaseHelper(this);
    linearLayout = findViewById(R.id.linearLayout);
    linearLayout = new LinearLayout(this);
    add_image = new View(this);
    add_name = new View(this);
    add_desc = new View(this);
    add_data = new View(this);
}

public void Login(View view) {
    Intent intent = new Intent(loginpage.this, MenuSelection.class);
    if (LoginEMail.getText().toString().equals("admin") && (LoginPassword.getText().toString().equals("admin"))) {
        startActivity(intent);
        linearLayout.setVisibility(View.VISIBLE);
    }
        else if(LoginEMail.getText().toString().equals("user") &&  (LoginPassword.getText().toString().equals("user"))) {
            startActivity(intent);
            linearLayout.setVisibility(View.GONE);
            add_image.setVisibility(View.GONE);
            add_name.setVisibility(View.GONE);
            add_desc.setVisibility(View.GONE);
            add_data.setVisibility(View.GONE);
    }
            else
        Toast.makeText(loginpage.this, "Incorrect E-mail or Password.", Toast.LENGTH_SHORT).show();
}

登录页面.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">

<EditText
    android:id="@+id/LoginEMail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:hint="E-Mail"
    android:inputType="textEmailAddress"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.504"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.204" />

<EditText
    android:id="@+id/LoginPassword"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="10"
    android:hint="Password"
    android:inputType="textPassword"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.495"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.338" />

<Button
    android:id="@+id/LoginBtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Log In"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.502"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.602"
    android:onClick="Login"/>
</androidx.constraintlayout.widget.ConstraintLayout>

menu_selection.xml

 <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:gravity="center_horizontal"
    android:orientation="vertical">

<ListView
    android:id="@+id/menu_list"
    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:id="@+id/linearLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="1.0">

    <ImageButton
        android:id="@+id/add_image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@color/black" />

    <EditText
        android:id="@+id/add_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Name" />

    <EditText
        android:id="@+id/add_desc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Description" />

    <Button
        android:id="@+id/add_data"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add" />
</LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

标签: javaandroidxml

解决方案


您无需使用该方法add_image = new View(this);将变量add_image与 XML 布局中的视图相关联。findViewById(R.id.add_image)同样对于您以这种方式初始化的其他 3 个视图。

您还需要删除该行linearLayout = new LinearLayout(this);。设置此变量的上一行是正确的。


推荐阅读