相关疑难解决方法(0)

将焦点设置在EditText上

我有一个EditText-Field并为它设置一个OnFocusChangeListener.当它失去焦点时,会调用一个方法,该方法使用数据库中的一个方法检查EditText的值.如果方法的返回值为true,则显示toast,焦点应再次返回EditText.焦点应始终返回EditText并且键盘应该显示,直到方法的返回值为false.

编辑:我想,我还没有完全清楚我的真正问题:屏幕上没有其他项目应该能够编辑,直到EditText的值被编辑为一个值,这使得方法"checkLiganame(liganame) "回归虚假.只有EditText-Field应该是可编辑的.

这是我的代码(这对我不起作用):

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();
                }
            }
Run Code Online (Sandbox Code Playgroud)

和方法:

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 + "'", …
Run Code Online (Sandbox Code Playgroud)

android focus android-edittext

161
推荐指数
9
解决办法
34万
查看次数

Android:Dialog中的EditText不会拉起软键盘

所以我有一个似乎常见的问题,就是我的对话框中的EditText在获得焦点时不会显示出来.我已经看过几个解决方法,比如在这个帖子中,这一个这一个(还有更多),但我从来没有见过一个令人满意的解释,为什么这首先发生.

我更倾向于让Android使用自己的EditTexts默认行为,而不是构建我自己的行为,但似乎每个人(在那些线程中)已经接受了Dialogs中EditTexts的默认行为是只给光标而没有键盘.那为什么会这样?

为了记录,这些解决方法似乎都没有对我有用 - 我最接近的是强制键盘出现对话框下面(使用InputMethodManager.toggleSoftKeyboard(*)).我的特殊配置是API15,EditText显示在AlertDialog中ListView的页脚中.设置了EditText android:focusable ="true",onFocusChangeListener 正在接收焦点事件.

编辑:

根据要求,这是我正在使用的特定代码段.我不打算整个布局,但在这个特定的应用程序中,EditText响应于按下对话框上的按钮而出现(类似于动作视图).它包含在RelativeLayout中,默认情况下可见性"已消失":

 <RelativeLayout 
       android:id="@+id/relLay"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_centerVertical="true"
       android:visibility="gone"
       android:layout_marginTop="5dp"
       android:layout_marginBottom="5dp">

        <ImageButton
            android:id="@+id/cancelBut"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:background="@color/transparent"
            android:src="@drawable/cancelButton" 
            android:layout_margin="5dp"/>

        <ImageButton
            android:id="@+id/okBut"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@id/cancelBut"
            android:background="@color/transparent"
            android:src="@drawable/okButton"
            android:layout_margin="5dp" />

        <EditText 
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:focusable="true"
            android:layout_toLeftOf="@id/okBut"/>
   </RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

构建它的代码将relativeLayout的可见性设置为"Visible"(并隐藏其他UI元素).根据我使用EditText的经验,这应该足以在EditText聚焦时拉起键盘.但是,出于某种原因,情况并非如此.我可以在onFocusChangeListener上设置以下内容:

    edit_text.setOnFocusChangeListener(new OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                // For whatever reason we need to request …
Run Code Online (Sandbox Code Playgroud)

android dialog android-softkeyboard android-edittext

79
推荐指数
6
解决办法
4万
查看次数

requestTeocus()for EditText无法在运行android P的设备上运行(API 28)

我正在使用EditText's接受OTP,EditText一旦用户将数字输入到字段中,用户就会关注下一个OTP .它适用于所有设备.但是在运行Android OS P即API 28的设备上,requestFocus()无法正常工作,并且EditTexts由于焦点不会自动移动,因此用户无法输入连续数字.

这是代码 - 默认情况下EditText's都禁用以防止打开系统键盘.我用我自己CustomKeybaord接受数字.然而它除了Android P.它有效.

mEtCode1.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            Log.d("BEFORE_", charSequence.toString());
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            hideError(charSequence.toString());

            if (!charSequence.toString().isEmpty()) {
                mEtCode2.requestFocus();
                mEtCode1.setBackground(getResources().getDrawable(R.drawable.verify_code_edit_text_background));
                mEtCode2.setBackground(getResources().getDrawable(R.drawable.verify_code_edit_text_background));
                mEtCode1.setEnabled(false);
            }

        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });
Run Code Online (Sandbox Code Playgroud)

请在这件事上给予我帮助

先感谢您

android

10
推荐指数
2
解决办法
2476
查看次数

Edittext requestFocus() 动态不起作用

接下来我在 xml 中添加了 nextFocus 值。

但是,根据未成年人复选框值的状态,一个编辑文本是可见的还是不可见的。所以我需要动态地在 YYYY editext 之后将焦点集中在它上面。但动态地 requestFocus() 不起作用。

单击下一步时我需要做什么

在此处输入图片说明

此电子邮件视图仅在未选中 18 岁以下复选框时可见。

在 YYYY edittext 之后单击下一步按钮时会发生什么:控制转到用户名 Edittext。我无法在 xml 中使用 FocusNext,因为每当电子邮件文本视图消失时应用程序就会崩溃

 dobYearEt.setOnEditorActionListener(new EditText.OnEditorActionListener() {

        @Override

        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            Log.i("focus","on yyyy");
            if (actionId == EditorInfo.IME_ACTION_DONE ||
              actionId == EditorInfo.IME_ACTION_NEXT) {
                Log.i("focus",isUnderAge+"");
                if(isUnderAge){
                    username_reg_ev_dob_row.setFocusableInTouchMode(true);
                    username_reg_ev_dob_row.requestFocus();
                }else{
// NOTHING HAPPENS
//                    email_ev.setFocusableInTouchMode(true);
//                    dobYearEt.clearFocus();
                  email_ev.requestFocus();
//                    InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//                    mgr.showSoftInput(email_ev, InputMethodManager.SHOW_IMPLICIT);
                }

                return false;
            }
Run Code Online (Sandbox Code Playgroud)

xml

  <ScrollView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/register"
                android:layout_marginLeft="@dimen/sign_up_left_right_margin" …
Run Code Online (Sandbox Code Playgroud)

android android-edittext

3
推荐指数
1
解决办法
6073
查看次数