Set Focus on EditText
Just put this line on your onCreate()
editText.requestFocus();
Requesting focus isn't enough to show the keyboard.
To get focus and show the keyboard you would write something like this:
if(myEditText.requestFocus()) {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
EDIT: Adding extra info to the answer after the checkLiganame method was added.
In the checkLiganame method you check if the cursor is null. The cursor will always return an object, so the check for null doesn't do anything. However the problem is in the line db.close();
When you close the database connection, the Cursor
becomes invalid and most probably is nulled.
So close the database after you've fetched the value.
Instead of checking the cursor for null, you should check if the number of rows returned are more than 0: if(cursor.getCount() > 0) and then set your boolean to true if so.
EDIT2: So here's some code for how to make it work. EDIT3: Sorry wrong code I added... ;S
First off, you need to clear focus if another EditText
gets focus. This can be done with myEditText.clearFocus()
. Then in your onFocusChangeListener you shouldn't really care if first EditText
has focus or not, so the onFocusChangeListener could look something like this:
public class MainActivity extends Activity implements OnFocusChangeListener {
private EditText editText1, editText2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText1 = (EditText) findViewById(R.id.editText1);
editText1.setOnFocusChangeListener(this);
editText2 = (EditText) findViewById(R.id.editText2);
editText2.setOnFocusChangeListener(this);
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
String liganame = editText1.getText().toString();
if(liganame.length() == 0) {
if(editText1.requestFocus()) {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
editText2.clearFocus();
Toast.makeText(MainActivity.this, "Dieser Liganame ist bereits vergeben", Toast.LENGTH_SHORT).show();
}
}
}
}
Replace the first check if(liganame.length() == 0)
with your own check, then it should work.
Take note, that all the EditText views should have set their onFocusChangeListener
to the same listener like I've done in the example.
Darwind code didn't show the keyboard.
This works for me:
_searchText.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(_searchText, InputMethodManager.SHOW_IMPLICIT);
in case the keyboard is not showing, try to force:
imm.showSoftInput(_searchText, InputMethodManager.SHOW_FORCED);
This works from me:
public void showKeyboard(final EditText ettext){
ettext.requestFocus();
ettext.postDelayed(new Runnable(){
@Override public void run(){
InputMethodManager keyboard=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.showSoftInput(ettext,0);
}
}
,200);
}
To hide:
private void hideSoftKeyboard(EditText ettext){
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(ettext.getWindowToken(), 0);
}
This changes the focus of the EditText when the button is clicked:
public class MainActivity extends Activity {
private EditText e1,e2;
private Button b1,b2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
e1=(EditText) findViewById(R.id.editText1);
e2=(EditText) findViewById(R.id.editText2);
e1.requestFocus();
b1=(Button) findViewById(R.id.one);
b2=(Button) findViewById(R.id.two);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
e1.requestFocus();
}
});
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
e2.requestFocus();
}
});
}
}