【问题标题】:"cannot find symbol method setOnDismissListener(<anonymous OnDismissListener>)"“找不到符号方法 setOnDismissListener(<anonymous OnDismissListener>)”
【发布时间】:2017-12-02 04:08:00
【问题描述】:

所以,我尝试在对话框中设置OnDismissListener

Datepicker dialog = new Datepicker(v);
dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override
                    public void onDismiss(DialogInterface Dialog) {
                        mGoogleMap.clear();
                        setMap(mGoogleMap);
                    }

                });

但它说

"Cannot resolve method 'setOnDismissListener(anonymous android.content.DialogInterface.OnDismissListener)'"

Datepicker 类扩展了DialogFragment,所以它应该有setOnDismissListener 方法?

我出于某种原因导入了android.content.DialogInterface'. Is it confused on thenew DialogInterface.onDismissListener()`?

编辑:有人要求提供一些 Datepicker 代码。所以这里是构造函数和东西。如果您还需要什么,请告诉我。

public class Datepicker extends DialogFragment implements DatePickerDialog.OnDateSetListener {
    EditText txtDate;
    String strdate;
    public Datepicker(View v){
        txtDate = (EditText)v;
    }
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        SimpleDateFormat simpleformat = new SimpleDateFormat("MM/dd/yyyy");
        strdate = simpleformat.format(c.getTime());
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }
}

【问题讨论】:

  • Datepicker 类扩展了DialogFragment,所以它应该有setOnDismissListener 方法? - 你是从哪里以及如何得出这个声明的?在DialogFragment中没有这种方法叫setOnDismissListener
  • 嗯。也许这就是我出错的地方? Android API 说“注意:DialogFragment 拥有 Dialog.setOnCancelListener 和 Dialog.setOnDismissListener 回调。您不能自己设置它们。要了解这些事件,请覆盖 onCancel(DialogInterface) 和 onDismiss(DialogInterface)。”但我不知道那是什么意思。我能做什么?
  • API 说得很清楚,你不应该这样做 setOnCancelListenersetOnDismissListener ,只需在你的类中直接覆盖 onCancelonDismiss 扩展 DialogFragment (并做你想要在对话框被取消/关闭时做)

标签: java android dialog listener dialogfragment


【解决方案1】:

你必须借助界面来解决这个问题

public class Main3Activity extends AppCompatActivity implements DatePickerListener{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

.........

     //Initialise or create your dialog like this
      DatePicker dialog = new DatePicker(v,this);
}

@Override
    public void onDatePickerDismissed() {
         //Here You receive the dialog dissmiss listner
                        mGoogleMap.clear();
                        setMap(mGoogleMap);
    }
}

创建一个类似的接口类

public interface DatePickerListener {

    public void onDatePickerDismissed();
}

像这样改变你的对话框选择器

@SuppressLint("ValidFragment")
public class DatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener {
    EditText txtDate;
    String strdate;
    DatePickerListener datePickerListener;
    @SuppressLint("ValidFragment")
    public DatePicker(View v, DatePickerListener _datePickerListener){
        txtDate = (EditText)v;
        this.datePickerListener = _datePickerListener;
    }

    public DatePicker() {

    }

    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        SimpleDateFormat simpleformat = new SimpleDateFormat("MM/dd/yyyy");
        strdate = simpleformat.format(c.getTime());
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    @Override
    public void onDateSet(android.widget.DatePicker datePicker, int i, int i1, int i2) {

    }

    @Override
    public void onDismiss(DialogInterface dialog) {
        datePickerListener.onDatePickerDismissed();
        super.onDismiss(dialog);
    }
}

希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多