日食检测到setOnShowListener执行错误 [英] Eclipse detect error on the implementation of setOnShowListener

查看:691
本文介绍了日食检测到setOnShowListener执行错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要定我的setOnShowListener()方法prevent对话框的关闭,所以我写这样的事情,

 公开对话update_pop_up()
{
    最后AlertDialog.Builder建设者=新AlertDialog.Builder(UgJadwal.this);
    LayoutInflater吹气= UgJadwal.this.getLayoutInflater();
    查看dialogView = inflater.inflate(R.layout.updatepopup,NULL);
    builder.setView(dialogView);
    builder.setIcon(R.drawable.update);
    builder.setTitle(更新计划);    builder.setPositiveButton(R.string.update,新DialogInterface.OnClickListener()
    {
        @覆盖
        公共无效的onClick(DialogInterface对话框,INT ID)
        {        }
    });    builder.setNeutralButton(R.string.retrieve,新DialogInterface.OnClickListener()
    {
        @覆盖
        公共无效的onClick(DialogInterface对话框,INT ID)
        {        }
    });    builder.setNegativeButton(R.string.cancel,NULL);
    返回builder.create();    builder.setOnShowListener(新DialogInterface.OnShowListener()
    {
        @覆盖
        公共无效昂秀(DialogInterface对话)
        {
            按钮检索= builder.getButton(AlertDialog.BUTTON_NEUTRAL);
            retrieve.setOnClickListener(新View.OnClickListener()
            {
                @覆盖
                公共无效的onClick(视图v)
                {
                    //没做什么;
                }
            });
        }
    });
}

至少有由食提示两个错误,第一个是关于 setOnShowListener 即说的方法setOnShowListener(新DialogInterface.OnShowListener(){})是未定义类型AlertDialog.Builder,另一种是在 builder.getButton(AlertDialog.BUTTON_NEUTRAL)即说的方法getButton(INT)是未定义的类型AlertDialog.Builder。我只是想知道为什么它会引发错误监守我有这样做的权利,我认为。每个人都必须想法解决它,谢谢!

[更新!]
谢谢大家的帮助。这是我对 setOnShowListener最后一个方法()

  dialog.setOnShowListener(新DialogInterface.OnShowListener()
    {
        @覆盖
        公共无效昂秀(DialogInterface对话)
        {
            按钮检索=((AlertDialog)对话框).getButton(AlertDialog.BUTTON_NEUTRAL);
            retrieve.setOnClickListener(新View.OnClickListener()
            {
                @覆盖
                公共无效的onClick(视图v)
                {
                    datasource.opentoread();
                    的String [] =哈日datasource.fetchDaily(ids.getText()的toString());
                    datasource.close();
                    day.setText(将String.valueOf(哈日[0]));
                    subject.setText(将String.valueOf(哈日[1]));
                    time.setText(将String.valueOf(哈利[2]));
                    location.setText(将String.valueOf(哈日[3]));
                    lecture.setText(将String.valueOf(哈日[4]));
                    Toast.makeText(getApplicationContext(),检索成功,Toast.LENGTH_LONG).show();
                }
            });
        }
    });
    返回对话框;


解决方案

  

第一个是上说:该方法setOnShowListener(新DialogInterface.OnShowListener(){})是未定义的类型AlertDialog.Builder的setOnShowListener


有两个原因,你会得到一个错误与此:

  builder.setNegativeButton(R.string.cancel,NULL);
返回builder.create();builder.setOnShowListener(新DialogInterface.OnShowListener()...


  1. 您将永远不会调用收益后达成任何code。

  2. setOnShowListener() 是AlertDialog的方法,而不是AlertDialog.Builder。



  

这是说的方法getButton(INT)是未定义的类型AlertDialog.Builder


这是同样的问题, getButton() 是AlertDialog的方法,而不是AlertDialog.Builder。


尝试是这样的:

  ...
builder.setNegativeButton(R.string.cancel,NULL);最后AlertDialog DLG = builder.create();
dlg.setOnShowListener(新DialogInterface.OnShowListener()
{
    @覆盖
    公共无效昂秀(DialogInterface对话)
    {
        按钮检索= dlg.getButton(AlertDialog.BUTTON_NEUTRAL);
        //改变了这种^^^
        retrieve.setOnClickListener(新View.OnClickListener()
        {
            @覆盖
            公共无效的onClick(视图v)
            {
                //没做什么;
            }
        });
    }
});
返回DLG;

I want to set my setOnShowListener() method to prevent dialog from closing, so I write something like this,

public Dialog update_pop_up()
{
    final AlertDialog.Builder builder = new AlertDialog.Builder(UgJadwal.this);
    LayoutInflater inflater = UgJadwal.this.getLayoutInflater();
    View dialogView = inflater.inflate(R.layout.updatepopup, null);
    builder.setView(dialogView);
    builder.setIcon(R.drawable.update);
    builder.setTitle("Update schedule");

    builder.setPositiveButton(R.string.update, new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int id)
        {

        }
    });

    builder.setNeutralButton(R.string.retrieve, new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int id)
        {

        }
    });

    builder.setNegativeButton(R.string.cancel, null);
    return builder.create();

    builder.setOnShowListener(new DialogInterface.OnShowListener()
    {
        @Override
        public void onShow(DialogInterface dialog)
        {
            Button retrieve = builder.getButton(AlertDialog.BUTTON_NEUTRAL);
            retrieve.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    //do nothing;
                }
            });
        }
    });
}

At least there are two error prompted by eclipse, the first one is on the setOnShowListener that say "The method setOnShowListener(new DialogInterface.OnShowListener(){}) is undefined for the type AlertDialog.Builder" and the other one is on the builder.getButton(AlertDialog.BUTTON_NEUTRAL) that say "The method getButton(int) is undefined for the type AlertDialog.Builder". I just wonder why it raises errors becuase I have do it right I think. Does everyone have an idea to fix it, thanks.

[UPDATE!!] Thanks everybody for your help. This is my final methoD on setOnShowListener()

dialog.setOnShowListener(new DialogInterface.OnShowListener()
    {
        @Override
        public void onShow(DialogInterface dialog)
        {
            Button retrieve = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEUTRAL);
            retrieve.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    datasource.opentoread();
                    String[] hari = datasource.fetchDaily(ids.getText().toString());
                    datasource.close();
                    day.setText(String.valueOf(hari[0]));
                    subject.setText(String.valueOf(hari[1]));
                    time.setText(String.valueOf(hari[2]));
                    location.setText(String.valueOf(hari[3]));
                    lecture.setText(String.valueOf(hari[4]));
                    Toast.makeText(getApplicationContext(), "Retrieve success", Toast.LENGTH_LONG).show();
                }
            });
        }
    });
    return dialog;

解决方案

the first one is on the setOnShowListener that say "The method setOnShowListener(new DialogInterface.OnShowListener(){}) is undefined for the type AlertDialog.Builder"

There are two reasons why you'll get an error with this:

builder.setNegativeButton(R.string.cancel, null);
return builder.create();

builder.setOnShowListener(new DialogInterface.OnShowListener() ...

  1. You will never reach any code after calling return.
  2. setOnShowListener() is a method in AlertDialog, not AlertDialog.Builder.


that say "The method getButton(int) is undefined for the type AlertDialog.Builder"

This is the same problem, getButton() is a method in AlertDialog, not AlertDialog.Builder.


Try something like this:

...
builder.setNegativeButton(R.string.cancel, null);

final AlertDialog dlg = builder.create();
dlg.setOnShowListener(new DialogInterface.OnShowListener()
{
    @Override
    public void onShow(DialogInterface dialog)
    {
        Button retrieve = dlg.getButton(AlertDialog.BUTTON_NEUTRAL);
        // Changed this   ^^^
        retrieve.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                //do nothing;
            }
        });
    }
});
return dlg;

这篇关于日食检测到setOnShowListener执行错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆