java - 待办事项应用程序:仅在单击两次添加按钮后才添加文本
问题描述
我目前正在制作一个待办事项应用程序,并且我制作了一个加号按钮 - 单击时,它会向用户询问文本并将其显示在屏幕上。我一定遗漏了一些明显的东西,但我的文本视图仅在我单击按钮两次后才会显示。第一次,它要求输入,我单击完成。什么都没有出现。然后,我再次单击该按钮,立即弹出 textview。
public void additem(View view){
//setContentView(R.layout.activity_main);
ConstraintLayout mainmenulayout = (ConstraintLayout)findViewById(R.id.mainConstraint);
ConstraintSet set = new ConstraintSet();
TextView itemtoaddtxv = new TextView(this);
// Asking the user for input
final AlertDialog.Builder inputAlert = new AlertDialog.Builder(this);
inputAlert.setMessage("Enter task");
final EditText userInput = new EditText(this);
inputAlert.setView(userInput);
inputAlert.setPositiveButton("Done", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
m_text = userInput.getText().toString();
}
});
inputAlert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alertDialog = inputAlert.create();
alertDialog.show();
itemtoaddtxv.setText("test");
//
itemtoaddtxv.setId((int)21); // I HAVE TO CHANGE THIS TO BE DYNAMIC AND INCREMENT ID EVERYTIME I ADD ITEM
itemtoaddtxv.setWidth(366);
itemtoaddtxv.setTextSize(20);
mainmenulayout.addView(itemtoaddtxv, 0);
set.clone(mainmenulayout);
TextView titletxv = findViewById(R.id.menutitletext);
set.connect(itemtoaddtxv.getId(),ConstraintSet.TOP,titletxv.getId(),ConstraintSet.BOTTOM,28);
set.connect(itemtoaddtxv.getId(),ConstraintSet.LEFT,mainmenulayout.getId(),ConstraintSet.LEFT,12);
set.applyTo(mainmenulayout);
itemtoaddtxv.setText(m_text);
}
我只想单击按钮,输入文本,单击完成并显示。我已经尝试了几个小时对此进行故障排除,但我无法弄清楚。我很感激这方面的任何帮助。
解决方案
这是因为在“肯定”中,onClick
您正在设置值。然而,这就是你所做的一切。您需要移动实际将其添加到视图中的代码。如下所示:
inputAlert.setPositiveButton("Done", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
m_text = userInput.getText().toString();
itemtoaddtxv.setText(m_text);
itemtoaddtxv.setId((int)21);
itemtoaddtxv.setWidth(366);
itemtoaddtxv.setTextSize(20);
mainmenulayout.addView(itemtoaddtxv, 0);
set.clone(mainmenulayout);
TextView titletxv = findViewById(R.id.menutitletext); set.connect(itemtoaddtxv.getId(),ConstraintSet.TOP,titletxv.getId(),ConstraintSet.BOTTOM,28);
set.connect(itemtoaddtxv.getId(),ConstraintSet.LEFT,mainmenulayout.getId(),ConstraintSet.LEFT,12);
set.applyTo(mainmenulayout);
itemtoaddtxv.setText(m_text)
}
});
推荐阅读
- ios - 我有 Xcode 命令行工具,我真的需要 Xcode GUI 来开发 iOS 应用程序吗?
- mongodb - MongoDB 通过用户 ID 在数组中查找对象
- java - Spring Jpa - 在代码中使用多个 findby 方法
- json - 例如,使用 jq,我如何从 json 文件中提取列表、整个列表
- java - 损坏的 ZIP 在 Java 中生成
- c# - 在 SIP 中注册后检查 INVITE
- docker - 以变量为参数的 CMD 和 ENTRYPOINT
- python - GitPython 未显示最新提交
- c# - 从 Azure Blob 存储流式传输视频
- php - 查找哪个自动生成的输入已更改/按下按钮 - 已更新