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:
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 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