亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對話框關閉在適配器內不起作用

對話框關閉在適配器內不起作用

阿波羅的戰車 2024-01-05 16:25:37
我有一個模式(對話框),里面有編輯文本和發送按鈕,我想做的只是在單擊按鈕時發送編輯文本內的內容,問題是,發送內容正在工作,但是當我打電話時mydialog.dismiss();它不起作用。它使用另一個類的實例來調用方法改造,在“完成”和“未完成”按鈕內,我有一個“enviar”(發送)按鈕,這是我試圖關閉模式的按鈕。這是適配器代碼:public TasksAdapter(@NonNull Context context, @SuppressLint("SupportAnnotationUsage") @LayoutRes ArrayList<Tasks> list){    super(context, 0, list);    sContext = context;    taskData = list;}@NonNull@Overridepublic View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent){    View listItem = convertView;    if(listItem == null)        listItem = LayoutInflater.from(sContext).inflate(R.layout.item_tasks, parent,false);    final Tasks presenteTask = taskData.get(position);    TextView taskTitle = (TextView) listItem.findViewById(R.id.tasksTitle);    taskTitle.setText(presenteTask.getTitle());    EditText taskColor = (EditText) listItem.findViewById(R.id.taskColor);    if(presenteTask.getHexaColor().isEmpty()){        HexaColor = "#FFFFFF";    }    else{        HexaColor = presenteTask.getHexaColor();        taskColor.setBackgroundColor(Color.parseColor(HexaColor));    }    TextView taskTime = (TextView) listItem.findViewById(R.id.taskTime);    taskTime.setText(presenteTask.getTimeStart().toString().substring(0,5));    tasksModal = new Dialog(sContext);    tasksModal.setCancelable(false);    tasksModal.setContentView(R.layout.modal_tasksdone);    tasksModal.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));    final EditText comentarios = (EditText) tasksModal.findViewById(R.id.edtComentario);    final Calendario calendario = new Calendario();    Button done = (Button) listItem.findViewById(R.id.tasksDone);    done.setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View view) {            yorn = true;            tarefaId = presenteTask.getTaskId();            data = presenteTask.getDataTask();            hora = String.valueOf(presenteTask.getTimeStart());
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

首先,您必須使對話框不可取消,以便外部單擊不會使用以下命令將其關閉tasksModal.setCancelable(false);


其次,無需重復代碼來在done/undone按鈕單擊內創建對話框。因此,刪除它并將其移至TasksAdapter構造函數。


第三,您不會在單擊按鈕時關閉對話框done。所以,添加這個tasksModal.dismiss();


檢查并嘗試使用以下代碼:


EditText comentarios;

Calendario calendario;


public TasksAdapter(@NonNull Context context, @SuppressLint("SupportAnnotationUsage") @LayoutRes ArrayList<Tasks> list){

    super(context, 0, list);

    sContext = context;

    taskData = list;

    tasksModal = new Dialog(sContext);

    tasksModal.setCancelable(false); //make it un cancelable

    tasksModal.setContentView(R.layout.modal_tasksdone);

    tasksModal.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

    comentarios = (EditText) tasksModal.findViewById(R.id.edtComentario);

    calendario = new Calendario();

}

-------------------------------------------------------------

Button done = (Button) listItem.findViewById(R.id.tasksDone);

done.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View view) {

        comentarios.setText("");

        yorn = true;

        tarefaId = presenteTask.getTaskId();

        data = presenteTask.getDataTask();

        hora = String.valueOf(presenteTask.getTimeStart());


        tasksModal.findViewById(R.id.btnSend).setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                comentario = comentarios.getEditableText().toString();

                if(!comentario.equals("")){

                    tasksModal.dismiss(); //dismiss here

                    calendario.retrofitDoneTasks(tarefaId, comentario, data, hora, yorn, tarefaRealizadaId);

                }

                else{

                    Toast.makeText(sContext,"Por favor digite um comentário.", Toast.LENGTH_SHORT).show();

                }

            }

        });


        tasksModal.show();

    }

});


Button notDone = (Button) listItem.findViewById(R.id.tasksNotDone);

notDone.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View view) {

        comentarios.setText("");

        yorn = false;

        tarefaId = presenteTask.getTaskId();

        data = presenteTask.getDataTask();

        hora = String.valueOf(presenteTask.getTimeStart());


        tasksModal.findViewById(R.id.btnSend).setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                comentario = comentarios.getEditableText().toString();

                if(comentario.equals("")){

                    Toast.makeText(sContext,"Por favor digite um comentário.", Toast.LENGTH_SHORT).show();

                }

                else{

                    tasksModal.dismiss();

                    calendario.retrofitDoneTasks(tarefaId, comentario, data, hora, yorn, tarefaRealizadaId);

                }

            }

        });


        tasksModal.show();

    }

});




查看完整回答
反對 回復 2024-01-05
  • 1 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號