【问题标题】:Android - How to check if EditText is empty and disable Button? [duplicate]Android - 如何检查 EditText 是否为空并禁用 Button? [复制]
【发布时间】:2016-08-29 07:47:12
【问题描述】:

我正在开发一个 Android 应用程序,其中大部分是借助教程和阅读材料,我的应用程序有点基础,进行一些计算并将结果显示给用户

我有什么

我创建了一个由this tutorial 引导的片段,我只是用我自己的 EditText 和 Button 替换了按钮和 textview

我有一个 EditText、一个 Button 和一个 TextView,这些是用户在打开片段时看到的小部件

我的目标

我希望用户在 EditText 中输入值,当她/他单击按钮时,TextView 会显示一些计算的结果

我做了什么

我一直在尝试来自herehereherehere 的其他答案,但我不知道如何连接代码,每次我写一些代码时我应用程序崩溃,我不知道该怎么办

这是我的代码

public class Circle_Perimeter extends Fragment
{
    EditText edtxt;
    Button btn;
    TextView txt;

    public static Circle_Perimeter newInstance()
    {
        Circle_Perimeter fragment = new Circle_Perimeter();
        return fragment;
    }

    public Circle_Perimeter()
    {
    }

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container,
                             Bundle savedInstanceState)
    {
        View rootView = inflater.inflate(R.layout.fragment_circle__perimeter,container,false);

        edtxt = (EditText)rootView.findViewById(R.id.editText);
        btn = (Button)rootView.findViewById(R.id.button6);
        txt = (TextView) rootView.findViewById(R.id.textView6);

        btn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {

            }
        });

        return rootView;
    }
}

问题

如何以及在哪里编写必要的代码以使 EditText 向用户发送 Toast 警告 EditText 为空?还是在 EditText 为空时禁用 Button?

编辑:真的吗??投反对票??而不是downvoting...只需发出警告或其他内容

编辑 2:我已经说过我确实遵循了 here 的另一个答案,但我无法使我的代码正常工作,这就是为什么我在这里用我的代码寻找答案

【问题讨论】:

  • 你的代码到底哪里崩溃了??可以发error log吗?
  • 为什么不禁用按钮并为editText实现onChangeListener?只是好奇这种方法。
  • 与你的问题无关,请不要乞求。我编辑了这引起的噪音。如果您的问题有可取之处,则不会被否决。求答案求投票只会适得其反。

标签: java android android-fragments button


【解决方案1】:

要通知EditText 中的文本更改,您需要使用TextWatcher。 请查看此文档https://developer.android.com/reference/android/text/TextWatcher.html

public class Circle_Perimeter extends Fragment
{
    EditText edtxt;
    Button btn;
    TextView txt;

    public static Circle_Perimeter newInstance()
    {
        Circle_Perimeter fragment = new Circle_Perimeter();
        return fragment;
    }

    public Circle_Perimeter()
    {
    }

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container,
                             Bundle savedInstanceState)
    {
        View rootView = inflater.inflate(R.layout.fragment_circle__perimeter,container,false);

        edtxt = (EditText)rootView.findViewById(R.id.editText);
        btn = (Button)rootView.findViewById(R.id.button6);
        txt = (TextView) rootView.findViewById(R.id.textView6);

        //Initially set it as disabled
        btn.setEnabled(false);

        //Add textWatcher to notify the user
        edtxt.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                //Before user enters the text
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                //On user changes the text
                if(s.toString().trim().length()==0) {
                    btn.setEnabled(false);
                    Toast.makeText(getActivity(), "Text can not be empty..",
                            Toast.LENGTH_SHORT).show();
                } else {
                    btn.setEnabled(true);
                }
            }

            @Override
            public void afterTextChanged(Editable s) {
                //After user is done entering the text

            }
        });

        btn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                //do your final job here
            }
        });

        return rootView;
    }
}

【讨论】:

  • @NAYIR55 试试这个。希望对您有所帮助!
  • @downvoters,请您留下投反对票的理由,这将有助于我改进这个答案以及将来
  • 我没有投反对票,但我认为你是因为不必要的代码而得到的,因为根据他的要求,不需要文本观察者只需找到长度并验证按钮单击时编辑文本值是否为空够了。
  • @brahmyadigopula 我提到了 TextWatcher,因为他的要求是“我如何以及在哪里编写必要的代码以使 EditText 发送 Toast 警告用户 EditText 为空?或者禁用按钮,如果EditText 是空的?”因此,如果他在单击按钮时检查空字符串并禁用该按钮,他又如何知道用户已输入文本以再次启用它?
  • 您也可以在按钮单击下实现该壮举。我认为您也可以做到这一点..禁用意味着使其死亡,因此您可以通过使用长度()进行验证来实现。如果他的要求像按钮可见性那么上面的代码是可取的。不要对我生气,我只是一个分析器。
【解决方案2】:

检查编辑文本是否为空很简单

if{edittext.getText == null){}

if(editText.isEmpty){}

最好的方法是制作按钮

button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(edittext != null){
//do what u want for no empty button
}else{
//block ur button}

                }
            });

【讨论】:

    【解决方案3】:

    您可以使用与Android 捆绑在一起的TextUtils API 检查EditText 中的null 实例

    if(!TextUtils.isEmpty(editText) {
        //Do your desired work
    }else {
        //Notify user for rectification
    }
    

    要使用按钮,您可以使用其中任何一个:

    • button.setVisibility(VIEW.GONE)
    • button.setEnabled(false)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2018-07-03
      • 2013-02-07
      相关资源
      最近更新 更多