カスタムダイアログに問題があります。
私のダイアログは、TextView
、EditText
、および「OK」ボタンで構成されています。 [OK]をクリックすると、EditTextフィールドからテキストが取得され、アクティビティで定義された文字列変数「name」に割り当てられます。
すべてが機能しているようで、エラーなどはありませんが、「テキスト」は常に空の文字列です。
このような問題に関するいくつかのトピックを読みましたが、ここでどのような調整を行う必要があるのかはよくわかりません。
私はAndroidプログラミングにまったく慣れていないので、誰かが問題を説明してくれたら感謝します。事前に感謝します。
final Dialog dialog = new Dialog(MyActivity.this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Title");
final View layout = View.inflate(this, R.layout.custom_dialog, null);
Button button = (Button) dialog.findViewById(R.id.dialog_ok);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText edit=(EditText)layout.findViewById(R.id.dialog_edit);
String text=edit.getText().toString();
name=text;
dialog.dismiss();
}
});
dialog.show();
必要のない場所でレイアウトを膨らませています。ご覧のとおりコードを修正しました。膨張した行を削除し、EditTextビューを見つけようとする行を変更しました。
final Dialog dialog = new Dialog(MyActivity.this);
dialog.setContentView(R.layout.custom_dialog);
dialog.setTitle("Title");
Button button = (Button) dialog.findViewById(R.id.dialog_ok);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText edit=(EditText)dialog.findViewById(R.id.dialog_edit);
String text=edit.getText().toString();
dialog.dismiss();
name=text;
}
});
dialog.show();
Matsjoeとkrishnaの代替(両方とも):
builder.setPositiveButton(R.string.signin, new DialogInterface.OnClickListener() {
//@Override
public void onClick(DialogInterface dialog, int id) {
// sign in the user ...
Dialog dialogObj =Dialog.class.cast(dialog);
EditText etUsr=(EditText) dialogObj.findViewById(R.id.username_id_value);
userStr = etUsr.getText().toString();
}
}
);
Kf
それがあなたを助けることを願っています。
private void inputFromDialog() {
final Dialog dialog = new Dialog(SplashActivity.this);
dialog.setContentView(R.layout.view_dialog);
dialog.setTitle("Title");
dialog.setCancelable(false);
dialog.show();
Button button = (Button) dialog.findViewById(R.id.continue_BTN);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText inputET=(EditText)dialog.findViewById(R.id.input_ET);
if (inputET.getText().toString().equals("")){
inputET.setError("This field is required");
}else {
mssid = inputET.getText().toString();
dialog.cancel();
Toast.makeText(SplashActivity.this, mssid, Toast.LENGTH_SHORT).show();
}
}
});
}