不要从onClickListener onClick方法返回代码

时间:2018-02-14 07:36:37

标签: java android

这部分代码是在点击按钮EditText时添加3 secbutt行。虽然屏幕上有三条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>

1 个答案:

答案 0 :(得分:0)

当计数器资源0:

时,你会错过将按钮设置为不可见的逻辑
            public void onClick(View view) {

                plusTextField();

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

            }

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

enter image description here