待办事项列表应用程序:仅在单击两次添加按钮后才添加文本
To-Do list application : Text is only added after clicking add button twice
我目前正在制作一个待办事项应用程序,并且制作了一个加号按钮 - 单击时,它会要求用户输入文本并将其显示在屏幕上。我一定是遗漏了一些明显的东西,但我的文本视图只在我点击按钮两次后才会显示。第一次,它要求输入,然后我单击“完成”。什么都没有出现。然后,我再次点击按钮,文本视图立即弹出。
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)
}
});
我目前正在制作一个待办事项应用程序,并且制作了一个加号按钮 - 单击时,它会要求用户输入文本并将其显示在屏幕上。我一定是遗漏了一些明显的东西,但我的文本视图只在我点击按钮两次后才会显示。第一次,它要求输入,然后我单击“完成”。什么都没有出现。然后,我再次点击按钮,文本视图立即弹出。
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)
}
});