【问题标题】:cannot resolve symbol(context)无法解析符号(上下文)
【发布时间】:2016-05-21 11:09:36
【问题描述】:

在 android 中还很年轻。在我的代码中的这一行出现此错误:new AlertDialog.Builder(context)。我得到的错误是无法解析符号(context)。

请帮忙,

   case R.id.chk_clas1:
            //do stuff
            if (chk_clas1.isChecked()) {
                if(c1.equals("0")){
                adddate(txt_clas1);}
                clas="1";
                fdate=txt_clas1.getText().toString();

                new AlertDialog.Builder(context)
                  .setTitle("Delete entry")
                  .setMessage("Are you sure you want to delete this entry?")
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                                // continue with delete
                            }
                        })
                        .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int which) {
                                // do nothing
                            }
                        })
                        .setIcon(android.R.drawable.ic_dialog_alert)
                        .show();

            } else {
                txt_clas1.setText("");

            }

【问题讨论】:

  • 警报对话框不适用于Context,您在哪里编写此代码?请发布您的全部活动..
  • @vrundpurohit 好的,我现在就去
  • 您是否为context 全局定义了它们?请发布您的完整代码。
  • @user3367817 如果您使用的是Fragment,请使用new AlertDialog.Builder(getActivity())

标签: android android-studio android-alertdialog android-context builder


【解决方案1】:

在这里,您使用上下文作为变量,但您既没有声明它,也没有初始化它,因此出现了错误。

你可以定义它(同时初始化)

 Context context = this;

因为 this 指的是一个类的当前对象实例,而 Activity 是一个 Context。

如果你扩展活动而不是使用

new AlertDialog.Builder(this)

如果你扩展片段而不是使用

new AlertDialog.Builder(getActivity())

【讨论】:

  • 我扩展了片段,但您没有完成您提供的那行代码 new AlertDialog.Builder(getActivity(), .....????
  • 好的。现在我已经完成了。在里面写 getActivity()。
  • 我尝试使用 'this' 但它不起作用。上下文也不起作用
  • @Magic_Whizz 你在片段中使用吗?
  • @Magic_Whizz 使用 this@youractivityname
【解决方案2】:

试试这个, 用 classname.this 替换上下文

【讨论】:

  • 当我用我的类名 (Tracking.this) 替换上下文时,我收到这个错误,说 Builder(android.content.Content) in Builder 不能应用于 (Com.tracker.Tracking.this)
  • 这是一个 Activity 类吗?
  • 然后试试这个,fragmentClassName.getContext()
【解决方案3】:

yourActivity.this代替context

因为context 在我的例子中是当前类实例

我的活动是MainActivity,所以我将使用MainActivity.this

new AlertDialog.Builder(MainActivity.this)

【讨论】:

  • Sameer Ahmed,当我将其更改为我的活动时,我收到此错误消息,说 Builder 中的 Builder(android.content.Content) 无法应用于 (Com.tracker.Tracking.this)
猜你喜欢
  • 2014-02-05
  • 1970-01-01
  • 2016-12-31
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
相关资源
最近更新 更多