当前位置: 首页 > 知识库问答 >
问题:

将焦点设置在EditText上

郭弘方
2023-03-14

我有一个EditText-Field,并为它设置了一个OnFocusChangeListener。当它失去焦点时,将html" target="_blank">调用一个方法,该方法用数据库中的EditText检查EditText的值。如果方法的return-value为true,则显示一个toast并且焦点应该再次回到EditText上。焦点应该总是回到EditText上,键盘应该显示,直到方法的return-value为false。

edit:我想,我还没有把真正的问题说清楚:屏幕上的任何其他项都不能编辑,直到EditText的值被编辑为一个值,这使得方法“checkliganame(liganame)”返回false。只有EditText-字段应该是可编辑的。

final EditText Liganame = (EditText) findViewById(R.id.liganame);

    Liganame.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {

                String liganame = Liganame.getText().toString();


                if (checkLiganame(liganame)) {
                    Toast toast = Toast.makeText(CreateTableActivity.this,
                            "Dieser Liganame ist bereits vergeben",
                            Toast.LENGTH_SHORT);
                    toast.show();
                    Liganame.requestFocus();
                }
            }
public boolean checkLiganame(String liganame) {
    boolean found = false;

    DatabaseHelper databaseHelper = new DatabaseHelper(this);
    SQLiteDatabase db = databaseHelper.getReadableDatabase();

    Cursor cursor = db.query("liga", new String[] { "liganame" },
            "liganame = '" + liganame + "'", null, null, null, null);
    Log.i("Liganame: ", String.valueOf(cursor));

    db.close();
    if (cursor != null) {
        found = true;
    }

    return found;
}

此代码导致以下结果:EditText失去焦点后,焦点跳回EditText,但我不能再编辑文本了。

Edit2:更改了我的代码。场景:

我单击第一个EditText并在其中放入一个字符串,该字符串已经在数据库中。祝酒词开始了。现在我不能再编辑我的字符串了。我单击键盘上的“下一步”,焦点停留在第一个EditText上。我试图编辑我的字符串,但什么也没发生。相反,我的新字符串显示在第二个EditText中。我点击设备的后箭头,重新点击第一个和第二个EditText-->没有键盘显示。

下面是我的新代码:

public class CreateTableActivity extends Activity implements
    OnFocusChangeListener {

private EditText Liganame, Mannschaftsanzahl;

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

    Liganame = (EditText) findViewById(R.id.liganame);
    Liganame.setOnFocusChangeListener(this);
    Mannschaftsanzahl = (EditText) findViewById(R.id.mannschaftsanzahl);
    Mannschaftsanzahl.setOnFocusChangeListener(this);

    final Button save_button = (Button) findViewById(R.id.create_tabelle_speichern_button);

    OnClickListener mCorkyListener = new OnClickListener() {
        public void onClick(View v) {
            ButtonClick();
        }
    };
    save_button.setOnClickListener(mCorkyListener);



}

@Override
public void onFocusChange(View v, boolean hasFocus) {
    String liganame = Liganame.getText().toString();

    if (checkLiganame(liganame)) {
        if (Liganame.requestFocus()) {
            getWindow()
                    .setSoftInputMode(
                            WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
            Mannschaftsanzahl.clearFocus();
            Toast.makeText(CreateTableActivity.this,
                    "Dieser Liganame ist bereits vergeben",
                    Toast.LENGTH_SHORT).show();
        }
    }
}

共有1个答案

吴同
2023-03-14

只需将这一行放在oncreate()

editText.requestFocus();
 类似资料:
  • 是否可以将焦点从更改为? 我尝试了以下方法: 但它不起作用。按Tab键或Enter键时,光标消失。

  • 问题内容: 快速使用相机的API似乎有些不同,但我很难将相机聚焦在某个点上。当用户点击屏幕时,我希望相机将焦点对准该点 这是我的代码: 但这似乎不起作用。 任何建议都值得欢迎! 问题答案: 事实证明,它非常简单:

  • 本文向大家介绍Android 设置Edittext获取焦点并弹出软键盘,包括了Android 设置Edittext获取焦点并弹出软键盘的使用技巧和注意事项,需要的朋友参考一下 Android 设置Edittext获取焦点并弹出软键盘 ps:android页面进入edittext自动获取焦点,弹出软键盘解决方法 在edittext的父布局中加入上面2个属性 以上就是本文的全部内容,希望本文的内容对大

  • 问题内容: 我让我的游戏在没有鼠标的情况下运行,因此不能使用指针。当玩家输球时将显示高分菜单。 这是我的代码 我努力了 但仍然没有专注于我的。 如何聚焦呢? 问题答案: 如果希望在GUI显示时集中精力,可以使用以下方法: 哪里会是你和你的。

  • 问题内容: 我有一个用netbeans开发的应用程序,我想在显示面板时将焦点设置为一定。我已经阅读了许多文章,并尝试了各种方法,但没有奏效。主要问题之一是在哪里放置所需的代码,我认为在我的情况下是 有一些指示使用Window Listener的帖子,但是随着netbeans生成GUI,我无法看到如何实现接口,因为我无法编辑创建jPANEL等的代码。整个过程非常令人沮丧,我真的没有相信这应该很困难。

  • 我正在做Android智能电视应用: > 在中有一个自定义键盘和一个。 当应用程序启动时,焦点转到键盘。 null