Den Fokus in EditText einstellen.

T

tzabbi

Neues Mitglied
0
Guten Morgen,

ich sitze schon seit längerem vor einem Problem mit der richtigen Fokussierung von meinen Edit-Feldern.

hier erstmal mein Quellcode:

Code:
package mercator.mobilepos.android.metricgroup.com.mercator;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.DialogInterface;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.text.InputType;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import mercator.mobilepos.android.metricgroup.com.mercator.Database.UserDataSource;
import mercator.mobilepos.android.metricgroup.com.mercator.Entities.UserFromMaster;


public class LoginActivity extends AppCompatActivity implements View.OnKeyListener {

    private EditText mETUserNumber;
    private EditText mETPwt;
    private TextView mTVUserName;
    public int userIndetifier;
    final Context context = this;
    public static String BEDIENER = "";





    UserFromMaster userMaster = null;
    PublicFunction pfct = new PublicFunction();
    UserDataSource dataSource = new UserDataSource(this);

    @Override
    public boolean onKey(View viewUser, int keyCode, KeyEvent keyEvent)
    {
        String userPassword = mETPwt.getText().toString();
        if (viewUser == mETPwt)
        {
            if (keyEvent.getAction() == KeyEvent.ACTION_DOWN)
            {
                switch (keyCode)
                {
                    case KeyEvent.KEYCODE_ENTER:
                        if (false == mETPwt.getText().toString().isEmpty())
                        {
                            userIndetifier = Integer.parseInt(mETUserNumber.getText().toString());
                            String suchwert = mETUserNumber.getText().toString();
                            userMaster = dataSource.getUserDataFromMaster(suchwert);
                            PublicFunction.USER_IDENTIFIER = userIndetifier;
                            if(userMaster != null) {

                                if (userPassword.equals(userMaster.userPwt)) {
                                    PublicFunction.USER_IDENTIFIER = userIndetifier;
                                    SearchUserAndShow();
                                    Intent i = new Intent();
                                    i.setClass(getApplicationContext(), MainActivity.class);
                                    startActivity(i);
                                    this.finish();
                                } else {
                                    ShowMessage("Falsches Passwort!");
                                }
                            }
                            else
                            {
                                ShowMessage("Falsche Bedienernummer!");
                            }
                            return true;
                        }
                        else
                        {
                            ShowMessage("Bitte Passwort eingeben!");
                        }

                        break;
                }
            }

        }

        else if (viewUser == mETUserNumber)
        {
            if (keyEvent.getAction() == KeyEvent.ACTION_DOWN)
            {
                switch (keyCode)
                {

                    case KeyEvent.KEYCODE_ENTER:
                        if (false == mETUserNumber.getText().toString().isEmpty())
                        {
                            userIndetifier = Integer.parseInt(mETUserNumber.getText().toString());
                            if (true == pfct.isValidInput(mETUserNumber.getText().toString()))
                            {
                                PublicFunction.USER_IDENTIFIER = userIndetifier;
                                if (mETUserNumber.getText().length() >= 1)
                                {
                                    SearchUserAndShow();

                                }
                                else
                                {
                                    ShowMessage("Passwort zu kurz!");
                                    mETPwt.setText("");
                                }
                            }
                            else
                            {
                                ShowMessage(getString(R.string.invalid_amount));
                            }

                            return true;
                        }

                        else
                        {
                            ShowMessage("Bitte Benutzernummer eingeben!");
                        }
                        break;
                }
            }
        }

        return false;

    }



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_login);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);



        Button buttonClose = (Button) findViewById(R.id.btn_close);
        buttonClose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder alert = new AlertDialog.Builder(context);
                alert.setTitle("Verlassen der Anwendung!");
                alert.setMessage("Geben Sie bitte das Passwort ein!");


                final EditText input = new EditText(context);

                input.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
                alert.setView(input);

                alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        String srt = input.getEditableText().toString();
                        if (srt.equals("..."))
                        {
                            finish();
                        }
                        else  if (true == srt.isEmpty())
                        {
                            ShowMessage("Kein Passwort eingegeben!");
                        }

                        else if (!srt.equals("..."))
                        {
                            ShowMessage("Falsches Passwort!");

                        }
                    }
                });
                alert.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        dialog.cancel();
                    }
                });
                AlertDialog alertDialog = alert.create();
                alertDialog.show();
            }


        });


        Button buttonLogin = (Button) findViewById(R.id.btn_login);

        buttonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                if (true == mETUserNumber.getText().toString().isEmpty())
                {
                    ShowMessage("Keine Personalnummer eingegeben!");


                }
                else
                {
                    userIndetifier = Integer.parseInt(mETUserNumber.getText().toString());

                }
                String suchwert = mETUserNumber.getText().toString();
                userMaster = dataSource.getUserDataFromMaster(suchwert);
                String userPassword = mETPwt.getText().toString();

                if (null != userMaster) {
                    if (true == pfct.isValidInput(mETUserNumber.getText().toString())) {
                        PublicFunction.USER_IDENTIFIER = userIndetifier;
                        SearchUserAndShow();

                        if (userPassword.equals(userMaster.userPwt)) {
                            Intent i = new Intent();
                            i.setClass(getApplicationContext(), MainActivity.class);
                            startActivity(i);
                            finish();

                        } else {

                            if (mETPwt.getText().toString().equals("")) {
                                ShowMessage("Bitte Passwort eingeben!");
                            } else {
                                ShowMessage("Falsches Passwort!");
                            }
                        }



                    }
                }
                if (null == userMaster && false == mETUserNumber.getText().toString().isEmpty()
                        && (mETPwt.getText().toString().equals("") || true == mETPwt.getText().toString().isEmpty()) )
                {
                    ShowMessage("Falsche Personalnummer!");
                }
                else if (null == userMaster && false == mETUserNumber.getText().toString().isEmpty()
                        && !mETPwt.equals(""))
                {
                    ShowMessage("Falsche Personalnummer und falsches Passwort!");
                }
            }


        });



        mETUserNumber = (EditText) findViewById(R.id.et_usernumber);
        mETPwt = (EditText) findViewById(R.id.et_pwt);
        mTVUserName = (TextView) findViewById(R.id.tv_user_name);

        mETPwt.setOnKeyListener(this);
        mETPwt.setFocusableInTouchMode(true);
        mETUserNumber.setFocusableInTouchMode(true);
        mETUserNumber.setOnKeyListener(this);

       
    }


    private void SearchUserAndShow()
    {
        String suchwert = mETUserNumber.getText().toString();
        userMaster = dataSource.getUserDataFromMaster(suchwert);

        if (null != userMaster)
        {
            mTVUserName.setText(userMaster.userName);
            BEDIENER = mTVUserName.getText().toString();

            if (true == mETPwt.getText().toString().isEmpty())
            {
                mETPwt.setEnabled(true);
                mETUserNumber.clearFocus();
                mETUserNumber.requestFocus(View.FOCUS_DOWN);

            }
        }
        else
        {
            mETPwt.setEnabled(true);
            mETUserNumber.clearFocus();
            mETUserNumber.requestFocus(View.FOCUS_DOWN);
        }
    }
    private void ShowMessage(String msg)
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setMessage(msg)
                .setTitle(R.string.dialog_title)
                .setIcon(R.drawable.ic_achtung)
                .setCancelable(false)
        ;

        MediaPlayer mp = MediaPlayer.create(this, R.raw.fehler);
        mp.start();

        builder.setPositiveButton(R.string.ok_btn, new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int id)
            {
                mETUserNumber.requestFocus();
                mTVUserName.setText("");
                mETPwt.setText("");
            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();
    }
}

Jetzt möchte ich, dass der Fokus auf dem 2. EditText liegt, wenn ich Ihn, mit dem Finger, antippe und durch die Methode "SearchUserAndShow()" läuft. Bissher hat er den Fokus auf dem 2. EditText aber läuft nicht durch die Methode.

Gruß tzabbi
 
Ich hab jetzt das noch eingefügt.

Code:
EditText test = (EditText) findViewById(R.id.et_pwt);
        test.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    SearchUserAndShow();
                } else {
                    Toast.makeText(getApplicationContext(), "lost the focus", Toast.LENGTH_LONG).show();
                }
            }
        });

Allerdings verliert er sofort wieder den Fokus und geht wieder in das erste Edit-Feld.
 

Ähnliche Themen

OnkelLon
Antworten
13
Aufrufe
1.981
OnkelLon
OnkelLon
D
Antworten
23
Aufrufe
2.537
Data2006
D
A
  • Alex1978
Antworten
4
Aufrufe
820
Alex1978
A
Zurück
Oben Unten