【问题标题】:What context do I use for a new Dialog?我为新对话框使用什么上下文?
【发布时间】:2010-06-18 22:26:56
【问题描述】:

我需要在按钮按下时出现自定义对话框。这是我的代码:

Button button3 = (Button) findViewById(R.id.Button03); 
    button3.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

        final Dialog custdialog = new Dialog(this);


        custdialog.setContentView(R.layout.custom_drink);

        custdialog.setTitle("Custom Drink");

        custdialog.setCancelable(false);

 /etc.

然而,在这一行:final Dialog custdialog = new Dialog(this);

我收到一条错误消息,提示“构造函数 Dialog(new View.OnClickListener(){}) 未定义”。

我尝试用其他东西替换“this”,但没有成功。奇怪的是,我在这一行出现错误,因为我的项目中有完全相同的东西(除了不同的名称和东西),在一个开关下面(像这样:

@Override
 public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {
    case R.id.settings: 

 final Dialog settingsdialog = new Dialog(this);

    settingsdialog.setContentView(R.layout.custom_dialog);

    settingsdialog.setTitle("Settings");

    settingsdialog.setCancelable(false);

而且那个很好用……嗯。

【问题讨论】:

  • 您是否尝试过 Context.getApplicationContext() 而不是这个?
  • 我可以把“getApplicationContext()”放在那里并运行,但是当我按下按钮时我得到一个FC。
  • Context.getApplicationContext() 反而给了我一个错误“无法定义上下文”

标签: java android button dialog customdialog


【解决方案1】:

首先,在您的实际问题上,不要使用this,而是使用MyActivity.this,其中MyActivityActivity 类的名称。您正在尝试从内部类中使用它,但您需要的实际对象是外部类。

另外,切勿将getApplicationContext() 用于任何事情,尤其是与用户界面相关的任何事情。

【讨论】:

  • 谢谢。我认为这很容易解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多