首页 > 解决方案 > 待办事项应用程序:仅在单击两次添加按钮后才添加文本

问题描述

我目前正在制作一个待办事项应用程序,并且我制作了一个加号按钮 - 单击时,它会向用户询问文本并将其显示在屏幕上。我一定遗漏了一些明显的东西,但我的文本视图仅在我单击按钮两次后才会显示。第一次,它要求输入,我单击完成。什么都没有出现。然后,我再次单击该按钮,立即弹出 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);
    } 

我只想单击按钮,输入文本,单击完成并显示。我已经尝试了几个小时对此进行故障排除,但我无法弄清楚。我很感激这方面的任何帮助。

标签: javaandroidandroid-alertdialogandroid-constraintlayout

解决方案


这是因为在“肯定”中,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)
            }
        });

推荐阅读