回答:
の実装onFocusChange
でsetOnFocusChangeListener
、hasFocusのブールパラメータがあります。これがfalseの場合、別のコントロールにフォーカスを失っています。
EditText txtEdit = (EditText) findViewById(R.id.edittxt);
txtEdit.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
// code to execute when EditText loses focus
}
}
});
このインターフェースを因数分解して使用する場合は、Activity
実装をOnFocusChangeListener()
用意してください。例:
public class Shops extends AppCompatActivity implements View.OnFocusChangeListener{
OnCreate
たとえば、リスナーを追加できます。
editTextResearch.setOnFocusChangeListener(this);
editTextMyWords.setOnFocusChangeListener(this);
editTextPhone.setOnFocusChangeListener(this);
その後、android studioはインターフェイスからメソッドを追加するように求め、それを受け入れます...次のようになります。
@Override
public void onFocusChange(View v, boolean hasFocus) {
// todo your code here...
}
因数分解されたコードがあるので、それを行う必要があります:
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
editTextResearch.setText("");
editTextMyWords.setText("");
editTextPhone.setText("");
}
if (!hasFocus){
editTextResearch.setText("BlaBlaBla");
editTextMyWords.setText(" One Two Tree!");
editTextPhone.setText("\"your phone here:\"");
}
}
でコーディングするもの!hasFocus
はすべて、フォーカスを失うアイテムの動作のためのものです。ただし、このような状態では、フォーカスを変更するとユーザーのエントリが上書きされる可能性があることに注意してください。
正しく機能する
EditText et_mobile= (EditText) findViewById(R.id.edittxt);
et_mobile.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
// code to execute when EditText loses focus
if (et_mobile.getText().toString().trim().length() == 0) {
CommonMethod.showAlert("Please enter name", FeedbackSubmtActivity.this);
}
}
}
});
public static void showAlert(String message, Activity context) {
final AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage(message).setCancelable(false)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
}
});
try {
builder.show();
} catch (Exception e) {
e.printStackTrace();
}
}