java - 不要从 onClickListener onClick 方法返回代码

标签 java android

这部分代码是在单击secbutt按钮时添加3行EditText行。当所有三个 EditText 行都在屏幕上时,该按钮应该消失。

现在我不明白为什么进入 onClick 方法并启动 plusTextField 方法后,它只是无限地添加 EditText 行。我希望它执行一次并返回到 summonButton 方法的开头。我该怎么办?

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

    int numberOfLinesLeft = 3;

    Button secondaryActivityAddButton;

    LinearLayout llForSecondaryButton;

    LinearLayout llForSecondaryEditText;

    EditText et;

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

    public void summonButton(View view){

            llForSecondaryButton = findViewById(R.id.secondaryButton);
            secondaryActivityAddButton = new Button(this);

            secondaryActivityAddButton.setText("" + numberOfLinesLeft);
            llForSecondaryButton.addView(secondaryActivityAddButton);

            secondaryActivityAddButton.setOnClickListener(new View.OnClickListener() {

                public void onClick(View view) {

                    plusTextField();

                }
            });

    }

    public void plusTextField() {

            llForSecondaryEditText = findViewById(R.id.linearLayout1);

            // add edittext
            et = new EditText(this);
            et.setText("text" + numberOfLinesLeft);
            llForSecondaryEditText.addView(et);
            numberOfLinesLeft--;

    }
}

ActivityMain.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.egrishin.task_a_day.MainActivity">

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

        <TextView
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:text="@string/main_task_title"
            android:gravity="center_horizontal"
            />

        <EditText
            android:id="@+id/main_task_line_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="What is 1 main thing to be done today?"
            android:inputType="textMultiLine"
            android:layout_margin="16dp"
            />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout0"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:orientation="vertical"
        >

        <TextView
            android:id="@+id/textline2"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:text="@string/secondary_task_title"
            android:gravity="center_horizontal"
            android:onClick="summonButton"
        />

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_margin="16dp"
            >

        </LinearLayout>

        <LinearLayout
            android:id="@+id/secondaryButton"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >

        </LinearLayout>


    </LinearLayout>

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

        <TextView android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:text="@string/other_task_title"
            android:gravity="center_horizontal"/>


    </LinearLayout>


</LinearLayout>

最佳答案

您错过了当计数器丰富 0 时将按钮设置为不可见的逻辑:

            public void onClick(View view) {

                plusTextField();

                if(numberOfLinesLeft == 0) {
                    view.setVisibility(View.GONE);
                }

            }

这是结果,添加3个编辑文本后没有按钮:

enter image description here

关于java - 不要从 onClickListener onClick 方法返回代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48781910/

相关文章:

android - AlarmManager Android 每天上午10点触发闹钟

java - JVM 参数动态地作为 jsp 中的表单操作链接

android - React Native - 为什么我们在 CameraRoll.getPhotos() 中使用 after 属性?

javascript - Chrome Android 在输入之间切换时隐藏键盘

java - JGoodies 表单演示代码

android studio从2.3稳定版更新到3.0后构建工具失败

Android Studio 翻译编辑器不存在

java - Mongo/Morphia StackOverflow 错误?

java - 抛出意外的 StringIndexOutOfBoundsException?

java - 使用maven项目测试另一个项目