私のアプリには、ユーザーの詳細の編集ページがあり、対応するeditTextフィールドに現在の名前、メールアドレスなどを表示したいのですが、ユーザーはそれを消去して、必要に応じて新しいものを入力できます。
これを行う方法はありますか?助けてくれてありがとう
私のアプリには、ユーザーの詳細の編集ページがあり、対応するeditTextフィールドに現在の名前、メールアドレスなどを表示したいのですが、ユーザーはそれを消去して、必要に応じて新しいものを入力できます。
これを行う方法はありますか?助けてくれてありがとう
機能はありhint
ますか?を使用しsetHint()
て設定することも、XMLで設定することもできます(ただし、XMLはユーザーの名前/アドレスを「認識」していないため、おそらく必要ありません:))
xmlから:
android:text="yourtext"
特定のEdittextフィールドのxmlファイルでtextプロパティを使用できます。例えば :
<EditText
android:id="@+id/ET_User"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="yourusername"/>
このように、すべてのEdittextフィールドには、必要なテキストが含まれています。ユーザーが特定のEdittextフィールドを変更したい場合は、古いテキストを削除して新しいテキストを入力します。
別の方法では、アクティビティクラスで特定のEdittextフィールドIDを取得し、テキストをそのIDに設定するだけです。
別の方法=プログラムで
例:
EditText username=(EditText)findViewById(R.id.ET_User);
username.setText("jack");
まず、何らかの方法でユーザーの詳細をロードする必要があります
次に、EditTextがない場合は、それを見つける必要があります-
EditText et = (EditText)findViewById(R.id.youredittext);
EditTextを見つけたら、
et.setText(theUserName);
あなたはこのようにそれを行うことができます
private EditText nameEdit;
private EditText emailEdit;
private String nameDefaultValue = "Your Name";
private String emailDefaultValue = "abc@xyz.com";
onCreateメソッド内
nameEdit = (EditText) findViewById(R.id.name);
nameEdit.setText(nameDefaultValue);
nameEdit.setOnTouchListener( new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (nameEdit.getText().toString().equals(nameDefaultValue)){
nameEdit.setText("");
}
return false;
}
});
nameEdit.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus && TextUtils.isEmpty(nameEdit.getText().toString())){
nameEdit.setText(nameDefaultValue);
} else if (hasFocus && nameEdit.getText().toString().equals(nameDefaultValue)){
nameEdit.setText("");
}
}
});
emailEdit = (EditText)findViewById(R.id.email);
emailEdit.setText(emailDefaultValue);
emailEdit.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus && TextUtils.isEmpty(emailEdit.getText().toString())){
emailEdit.setText(emailDefaultValue);
} else if (hasFocus && emailEdit.getText().toString().equals(emailDefaultValue)){
emailEdit.setText("");
}
}
});
public class Main extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText et = (EditText) findViewById(R.id.et);
EditText et_city = (EditText) findViewById(R.id.et_city);
// Set the default text of second EditText widget
et_city.setText("USA");
}
}
デフォルト値の設定にはandroidandroid:hintを使用するか、android:textを使用します
SDKの将来のバージョンでは、Androidビューまたはグループビューの各ビューにデフォルト値の属性があることを望みます。ただし、これを克服するには、送信する前に、ビューが空であるかtrueに等しいかを確認してから、デフォルト値を割り当てます。
例:
/* add 0 as default numeric value to a price field when skipped by a user,
in order to avoid parsing error of empty or improper format value. */
if (Objects.requireNonNull(edPrice.getText()).toString().trim().isEmpty())
edPrice.setText("0");