gpt4 book ai didi

java - 如何捕获 EditText 上字符串的值?

转载 作者:行者123 更新时间:2023-12-02 04:22:10 26 4
gpt4 key购买 nike

我正在使用用户代码和密码进行登录。然后,当字段完成时,有一个按钮“登录”被设置。Enabled(false)并且它将被设置。Enabled(true)允许访问(我这样做是为了避免一致性测试)。

    super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final EditText codigo;
final TextView nome;
final EditText senha;

codigo = (EditText) findViewById(R.id.cod_edit_text);
senha = (EditText)findViewById(R.id.senha_edit_text);

String cod = codigo.getEditableText().toString();
String password = senha.getEditableText().toString();

final Button botaologar = (Button) findViewById(R.id.button_logar);
if(!cod.isEmpty() || !password.isEmpty())
{
botaologar.setClickable(true);
botaologar.setEnabled(true);
}
else
{
botaologar.setEnabled(false);
botaologar.setClickable(false);
}

但是,当我捕获 EditText 的字符串时,由于某种原因它是空的,并且按钮仍然设置。Enabled(false)。

我注意到,当我在 Activity_main.xml 的 XML 上命名并在 string.XML 上使用某个值的字符串时,按钮保持 set.Enabled(true) 状态,但该值显示在 EditText 上,并带有字符串.xml。看:

文件activity_main.xml:

<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"

android:text="@string/cod_edit_text"

android:id="@+id/cod_edit_text"
android:layout_below="@+id/codigo_text_view"
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:ems="10"
android:id="@+id/senha_edit_text"

android:text="@string/senha_edit_text"

style="@style/AppTheme"
android:password="true"
android:layout_alignParentEnd="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/senha_text_view"
android:layout_alignParentLeft="true" />

文件 string.xml:

<string name="cod_edit_text"> test </string>
<string name="senha_edit_text"> test </string>

所以,问题是我无法使按钮保持 .setEnabled(true) 因为我无法正确获取 EditText 的值。有办法解决这个问题吗?

最佳答案

使用TextWatcher:

示例

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {
private EditText passwordEditText;
private TextView textView;

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

/* Initializing views */
passwordEditText = (EditText) findViewById(R.id.password);
textView = (TextView) findViewById(R.id.passwordHint);
textView.setVisibility(View.GONE);

/* Set Text Watcher listener */
passwordEditText.addTextChangedListener(passwordWatcher);
}

private final TextWatcher passwordWatcher = new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

public void onTextChanged(CharSequence s, int start, int before, int count) {
textView.setVisibility(View.VISIBLE);
}

public void afterTextChanged(Editable s) {
if (s.length() == 0) {
textView.setVisibility(View.GONE);
} else{
textView.setText("You have entered : " + passwordEditText.getText());
}
}
};
}

您始终可以启用或禁用 TextWatcher 的 beforeTextChanged 或 afterTextChanged 中的按钮。根据您的要求。

关于java - 如何捕获 EditText 上字符串的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32637417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com