Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android应用程序中的警告对话框错误

Android应用程序中的警告对话框错误
EN

Stack Overflow用户
提问于 2012-03-20 14:13:05
回答 3查看 5.3K关注 0票数 0

我在我的Android应用程序中正确显示警报时遇到问题。目标是将GPS坐标发送到数据库,但首先检查用户是否在定义的区域中。如果用户在该区域之外,我希望显示警报。我一直在AlertDialog.Builder alert = new AlertDialog.Builder(this);行上遇到错误The constructor AlertDialog.Builder(new LocationListener(){}) is undefined我之前问过一个类似的问题,但是解决方案不起作用,我想这是因为我没有包括足够的代码。如果有任何建议,我将不胜感激!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        import java.io.BufferedReader;

        public class FindLocation  {

        protected static final Context SendLocation = null;
        private LocationManager locManager;
        private LocationListener locListener;


        private class SendLocation extends AsyncTask<String, Void, String> {

            protected String doInBackground(String... params) {

                String lat = params[0];
                String lon = params[1];
                String usr_id2 = params[2];

                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://example.com/example.php");

                try {
                       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                       nameValuePairs.add(new BasicNameValuePair("lat", lat)); 
                       nameValuePairs.add(new BasicNameValuePair("lon", lon));
                       nameValuePairs.add(new BasicNameValuePair("id", usr_id2));
                       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                       httpclient.execute(httppost);
                 } 
                 catch (ClientProtocolException e) {
                     // TODO Auto-generated catch block
                 } 
                 catch (IOException e) {
                     // TODO Auto-generated catch block
                 }
                return lon; 
            }
        }
        public void startLocation(Context context, String usr_id2) { //changed context to final when AlertDialog was added

            final String usr = usr_id2;

            //get a reference to the LocationManager
            locManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);


            //checked to receive updates from the position
            locListener = new LocationListener() {
                public void onLocationChanged(Location loc) {

                    String lat = String.valueOf(loc.getLatitude()); 
                    String lon = String.valueOf(loc.getLongitude());

                    Double latitude = loc.getLatitude();
                    Double longitude = loc.getLongitude();

                    if (latitude >= 39.15296 && longitude >= -86.547546 && latitude <= 39.184901 && longitude <= -86.504288) {
                            Log.i("Test", "Yes");                           
                            CityActivity check = new CityActivity();
                            check.checkDataBase(usr);

                            SendLocation task = new SendLocation();
                            task.execute(lat, lon, usr);
                    }
                    else {
                        Log.i("Test", "No");
                        AlertDialog.Builder alert = new AlertDialog.Builder(this); //****error here*****
                        alert.setTitle("Warning");
                        alert.setMessage("Sorry");
                        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int which) {
                              // here you can add functions
                           }
                        });
                        alert.show();
                    }

                }
                public void onProviderDisabled(String provider){
                }
                public void onProviderEnabled(String provider){ 
                }
                public void onStatusChanged(String provider, int status, Bundle extras){
                    }
                };
                locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locListener);
            }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-20 14:18:23

您在匿名侦听器LocationListener中声明了您的AlertDialog。如果您试图通过使用this在构造函数中获取对Context的引用,那么实际上将引用LocationListener,而不是ActivityContext。使用您的活动名称+ this,如ActivityName.this(如果您在活动中)或获取对Context的实际引用。

编辑:

在您的FindLocation类中创建一个以Context作为参数的构造函数,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//private field in your FindLocation class
Context ctx;

public FindLocation(Context ctx) {
     this.ctx = ctx;
}

然后,在实例化FindLocation类的Activity中,只需传递this(或ActivityName.this)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FindLocation obj = new FindLocation(this);

然后,您可以使用字段ctx来传入AlertDialog的构造函数。

票数 1
EN

Stack Overflow用户

发布于 2012-03-20 14:16:52

根据您的需要使用这段代码来实现警告框。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public void alertbox(String title, String message,Activity activiy) {
    final AlertDialog alertDialog = new AlertDialog.Builder(activiy).create();
    alertDialog.setTitle(title);
    alertDialog.setMessage(message);
    alertDialog.setIcon(R.drawable.dashboard);
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int which) {
              alertDialog.cancel();      
        } });
    alertDialog.show();
 }

这是我的代码,所以没有改变任何东西,你可以根据你的需要进行修改。谢谢

票数 0
EN

Stack Overflow用户

发布于 2012-03-20 14:18:43

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AlertDialog.Builder alert = new AlertDialog.Builder(this);

您在内部对象 LocationListener(){.....}中调用了此函数。我们知道这个表示的是当前对象,所以它会给出错误。

将此生成器的参数更改为getApplicationContext(),因为构建器被定义为接受Context

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9788493

复制
相关文章
浅谈警告即错误
  昨天,新来不久的同事调试一个准备上线的功能,可是怎么也调试不出来。当时刚好在喝水,看到他几百个警告。就和他说你还是处理一下编译警告吧。他一脸焦虑地说:没空弄啊?!功能快要上线了,来帮我看看。他还说,如果是很严重的警告,会导致编译错误,能编译过就可以了。
Qt君
2019/07/15
8150
python中的警告(不显示警告)
# import warnings # warnings.filterwarnings("ignore")
py3study
2020/01/09
3.6K0
Python忽略warning警告错误
从网上整理了一下Python忽略warning警告错误 方法一:直接运行脚本的时候加入参数 python -W ignore yourscript.py 方法二:代码中加入参数 import warnings with warnings.catch_warnings(): warnings.filterwarnings("ignore",category=DeprecationWarning) import pymssql #需忽略警告的模块 yourcode()
py3study
2020/01/07
1.4K0
Android中如何使用单选对话框[通俗易懂]
DanItem.setSingleChoiceItems第一个参数为(列表内容(建立的数组),默认选项为第几个,new一个Click事件) 如果选择了就给id赋予当前选中的下标
全栈程序员站长
2022/09/02
9360
爬虫之ssh证书警告错误
ssh证书是美国网景公司发放的一个安全认证证书,有了这个证书即可证明网站是安全的,但是认证是需要收费的,
小小咸鱼YwY
2019/07/22
7080
爬虫之ssh证书警告错误
错误信息: 错误信息如下: requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",)  错误分析:   ssh证书是美国网景公司发放的一个安全认证证书,有了这个证书即可证明网站是安全的,但是认证是需要收费的, 所以一些网站就会自己仿造证书,这个时候浏览器就会给予警告,而我们爬虫就爬不到想要
人生不如戏
2018/05/30
7730
ceph集群警告和错误类型
指标 说明 级别 noscrub flag(s) set 防止集群做清洗操作 full flag(s) set 使集群到达设置的full_ratio值。会导致集群阻止写入操作 nodeep-scrub flag(s) set 防止集群进行深度清洗操作 pause flag(s) set 集群将会阻止读写操作,但不会影响集群的in、out、up或down状态。集群扔保持正常运行,就是客户端无法读写 noup flag(s) set 防止osd进入up状态 nodown flag(s) set 防止
Lucien168
2020/07/20
2.1K0
android全局对话框
Toast.makeText(sInstance, “tishi”, Toast.LENGTH_SHORT).show();
tea9
2022/07/16
1.1K0
编程中的典型错误操作:应用程序级别
本文是该系列的第二篇。软件开发是一项越来越普遍的工作,但是在开发的过程中,有一些错误是我们经常遇到,或者是一犯再犯的,所以 George 在本文中整理了在应用级别常见的错误。
深度学习与Python
2021/11/10
7330
编程中的典型错误操作:应用程序级别
Android中各种Exception错误小结
The key must be an application-specific resource id:密钥必须是特定于应用程序的资源id。
zinyan.com
2023/02/28
2K0
Android中各种Exception错误小结
帮助对话框和错误消息对话框使用Matlab创建。
1、点击[命令行窗口] 2、按<Enter>键 3、点击[命令行窗口] 4、按<Enter>键 5、点击[确定]
裴来凡
2022/05/28
1.1K0
帮助对话框和错误消息对话框使用Matlab创建。
android入门 — AlertDialog对话框
  常见的对话框主要分为消息提示对话框、确认对话框、列表对话框、单选对话框、多选对话框和自定义对话框。   对话框可以阻碍当前的UI线程,常用于退出确认等方面。   在这里主要的步骤可以总结为:   1.创建AlertDialog.Builder对象;   2.调用setTitle()或setCustomTitle()方法设置标题;   3.调用setIcon()设置图标;   4.调用setPositiveButton()、setNegativeButton()或setNeturalButton()添加
Mister24
2018/05/14
1.1K0
Android应用程序中应用图标和名字的设置
在AndroidManifest.xml文件中设android:icon和 android:label指定名字和图标的位置,如: <application android:icon="@drawable/ic" android:label="@string/app_name" 则指定图标为项目工程下。。。app\src\main\res\drawable文件夹下名字为ic的图片 名字为。。。\app\src\main\res\values文件夹下strings中XML中描述的名字
用户1215536
2018/02/05
1.6K0
Android应用程序中应用图标和名字的设置
Android物联网应用程序开发(智慧园区)—— 设置传感器阈值对话框界面
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151784.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/24
7210
Android物联网应用程序开发(智慧园区)—— 设置传感器阈值对话框界面
Android中获取应用程序(包)的信息-----PackageManager的使用
Android系统为我们提供了很多服务管理的类,包括ActivityManager、PowerManager(电源管理)、AudioManager(音频管理)
forrestlin
2022/04/02
2.2K0
Android中获取应用程序(包)的信息-----PackageManager的使用
App渗透 - Android应用的错误中获取漏洞
Damn Insecure 漏洞App DIVA是一款漏洞App,旨在教授Android App中发现的漏洞、本文将引导你发现其中的一些漏洞。
Khan安全团队
2021/02/08
1.2K0
Android-ProgressDialog进度对话框
使用方法: 如果只是普通进度对话框 直接调用ProgressDialog静态方法 show() 即可 创建ProgressDialog 调用方法进行具体设置 setIndeterminate(false); 设置进度条是否显示进度 setMax(MAX_PROGRESS); 设置进度条的最大值 setMessage("..."); 设置对话框执行内容 setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) 设置对话框进度条风格 setProgress() 设置 进
圆号本昊
2021/09/24
7730
Android-ProgressDialog进度对话框
点击加载更多

相似问题

Android中的警告对话框错误

14

Android警告对话框错误

11

android中显示错误的警告对话框

30

android中的警告对话框

30

带有警告消息的Android警告对话框

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文