从EditText检查字符串上的第一个Char

时间:2016-11-04 17:26:39

标签: string android-edittext char focus

我想从EditText中读取一个String。这个String是一个#标签,应该以#开头。所以我想在用户输入后检查String的第一个char。如果字符串未通过检查,我想给出一个简单的警报并将焦点再次放在输入上,这样用户就可以再次尝试输入。

我该如何实现?

2 个答案:

答案 0 :(得分:1)

你可以通过获取ist字符串上下文来检查编辑文本... 这可以通过调用方法getText来完成,并从字符串结果验证开头的char(索引0)

EditText myInput =....
if(myInput.getText().charAt(0) !='#'){
    //modal dialog and/ or toast!
} else {
    // ok
}

答案 1 :(得分:0)

我找到了解决问题的方法。起初我写了一个方法,它检查String的第一个char,如果第一个char不等于,则发出一个Alert,并返回一个布尔值。

public boolean checkFirstChar (String s, char c) {
    boolean isConform = false;
    if (s.charAt(0) != c ) {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(SettingsActivity.this);
        // set title
        alertDialogBuilder.setTitle("Input not conform!");
        // set dialog message
        alertDialogBuilder
                .setMessage("Your hashtag should start with " + c)
                .setCancelable(false)
                .setNegativeButton("OK",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog,int id) {
                        // if this button is clicked, just close
                        // the dialog box and do nothing
                        dialog.cancel();
                    }
                });

        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();

        // show it
        alertDialog.show();
    } else {
        isConform = true;
    }
    return isConform;
}

然后我做一个OK按钮。在Button上我实现了一个OnClicklistener。 OnClick我从EditText获取String。然后我将String放入Method中以检查第一个char。如果Method返回true,我保存了Settings并启动了下一个Activity。如果没有,我就回到了EditText Focus。

//set onClickListener on OK Button
    btn_ok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            //get selected Item from Spinner HashTag Item
            strgHashtag = spinner_hashtag.getSelectedItem().toString();

            //get String form EditText addHashTag
            strgAddHashtag = edit_addHashTag.getText().toString();

            //check if the first char == #
            if (checkFirstChar(strgAddHashtag, '#') == true ) {

                //if true, add String to HashTagItem List
                spinner_HashTagItems.add(strgAddHashtag);

                //save settings into a JSON File on SD-Card
                saveSettings();

                //and put the hashTagString into an IntenExtra for the HomeActivity
                Intent intent = new Intent(SettingsActivity.this, HomeActivity.class);
                intent.putExtra("hashTag", strgHashtag);
                startActivity(intent);
                finish();
                //if the char != '#'
            } else {
                //return to the user input
                edit_addHashTag.requestFocus();
            }
        }
    });

我希望此代码可以帮助其他社区成员解决同样的问题。