gpt4 book ai didi

android - 如何从 AlertDialog 中的 EditText 中检索值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:07 24 4
gpt4 key购买 nike

选中后,上下文菜单选项会弹出一个 AlertDialog。我希望用户在 AlertDialog 中将文本输入到 EditText 中,并且当用户按下 PositiveButton 时,EditText 的值能够“返回”到 main 方法。这是我类(class)的相关代码:

public class PassPlay extends ListActivity {
public static final int PENALTY_ID = Menu.FIRST+1;
public static final int FUMBLE_ID = Menu.FIRST+2;
public static final int ADDLYDS_ID = Menu.FIRST+3;
public static final int SAFETY_ID = Menu.FIRST+4;

EditText ydsFromAlertDialog;

String penYdsStr;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.passplay);

ydsFromAlertDialog=(EditText)findViewById(R.id.passYdsLabel);

registerForContextMenu(getListView());
}

public boolean onCreateOptionsMenu(Menu menu) {
populateMenu(menu);
return(super.onCreateOptionsMenu(menu));
}

public boolean onOptionsItemSelected(MenuItem item) {
return(applyMenuChoice(item) || super.onOptionsItemSelected(item));
}

public boolean onContextItemSelected(MenuItem item) {
return(applyMenuChoice(item) || super.onContextItemSelected(item));
}

private void populateMenu(Menu menu) {
menu.add(Menu.NONE, PENALTY_ID, Menu.NONE, "Penalty");
menu.add(Menu.NONE, FUMBLE_ID, Menu.NONE, "Fumble");
menu.add(Menu.NONE, ADDLYDS_ID, Menu.NONE, "Additional Yards");
menu.add(Menu.NONE, SAFETY_ID, Menu.NONE, "Safety");
}

private boolean applyMenuChoice(MenuItem item) {
LayoutInflater factory = LayoutInflater.from(this);
final View textEntryView;
switch (item.getItemId()) {
case PENALTY_ID:
textEntryView = factory.inflate(R.layout.textdialog, null);
new AlertDialog.Builder(this)
.setView(textEntryView)
.setIcon(android.R.drawable.ic_dialog_alert)
.setTitle(R.string.timeout)
.setPositiveButton(R.string.offense, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Actions for offensive timeout
EditText penaltyYds=(EditText)findViewById(R.id.ydsAssessedLabel);
penYdsStr = penaltyYds.getText().toString();
ydsFromAlertDialog.setText(penYdsStr);
}
})
.setNeutralButton(R.string.defense, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Actions for defensive timeout
}
})
.setNegativeButton(R.string.cancel, null)
.show();
return true;
case FUMBLE_ID:
//Fumble window
return true;
case ADDLYDS_ID:
//Additional Yards window
return true;
case SAFETY_ID:
//Safety window
return true;
}

return(false);
}
}

主要 XML 布局 (passplay.xml) 具有普通的 TextView、EditText、CheckBox 等。我想设置其中一个 EditText (ydsFromAlertDialog) 以分配在 AlertDialog (EditText penaltyYds) 中输入的值。 AlertDialog 的 XML 布局 (textdialog.xml) 非常简单,只有一个 TextView 和一个 EditText。

当我运行该程序时,出现以下行错误“应用程序意外停止。”

penYdsStr = penaltyYds.getText().toString();

所以总而言之,我想按下菜单选项“惩罚”,有一个带 EditText 的 AlertDialog,我在其中输入数字,当我按下 PositiveButton 时,EditText ydsFromAlertDialog 的值更改为在对话框中输入的值。

实际上,我有一个包含 5 列的数据库表,其中 4 列将由普通字段填充,但第 5 列将由对话框中输入的值填充。我想如果我可以将它“返回”到“与”其余值“在一起”,我也可以将它保存到与其他值相同的表记录中。

如果您需要更多信息,请告诉我。谢谢!

最佳答案

您必须从您膨胀的 View 中获取 ydsAssessedLabel

EditText penaltyYds=(EditText)textEntryView.findViewById(R.id.ydsAssessedLabel);

关于android - 如何从 AlertDialog 中的 EditText 中检索值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6935242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com