关于android在thread中关闭dialog的错误

我用一个Thread去访问远程数据库,在过程中会弹出dialog,请求结束时,在handler里面关闭dialog
多次请求,就会出现闪退。报错如下
02-06 11:23:41.609: W/dalvikvm(22208): threadid=1: thread exiting with uncaught exception (group=0x40c99450)
02-06 11:23:41.609: E/AndroidRuntime(22208): FATAL EXCEPTION: main
02-06 11:23:41.609: E/AndroidRuntime(22208): java.lang.NullPointerException
02-06 11:23:41.609: E/AndroidRuntime(22208): at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:2993)
02-06 11:23:41.609: E/AndroidRuntime(22208): at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 11:23:41.609: E/AndroidRuntime(22208): at android.os.Looper.loop(Looper.java:137)
02-06 11:23:41.609: E/AndroidRuntime(22208): at android.app.ActivityThread.main(ActivityThread.java:4794)
02-06 11:23:41.609: E/AndroidRuntime(22208): at java.lang.reflect.Method.invokeNative(Native Method)
02-06 11:23:41.609: E/AndroidRuntime(22208): at java.lang.reflect.Method.invoke(Method.java:511)
02-06 11:23:41.609: E/AndroidRuntime(22208): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
02-06 11:23:41.609: E/AndroidRuntime(22208): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
02-06 11:23:41.609: E/AndroidRuntime(22208): at dalvik.system.NativeStart.main(Native Method)

这是源码
valuemap.clear();
valuemap.put("action", "/android/receiveLandMaterial.shtml");//线体验证的地址
valuemap.put("lineNo", lineNoValue);
valuemap.put("drawingNo", drawingNoValue);
valuemap.put("materialBarcode", ch.subSequence(0, ch.length()-1));
if(testdialog==null){
testdialog = new ShowDialog().showTestDialog(context, "正在领料当中");
}else{
testdialog.show();
}
editmap.put("szsdialog", testdialog);
editmap.put("szscheckmark", "1");
thread = new Thread(new CommonRun(editmap,valuemap)); //启动线程开始校验4
thread.start();

                                        Message msg = new Message();
    Map<String,Object> resultMap = new CheckTextDAO().checktext(valuemap,editmap);
    Bundle b = new Bundle();
    for(String key : resultMap.keySet()){
        b.putString(key, resultMap.get(key).toString());
    }
    //b.putString("message", (String) resultMap.get("message"));
    msg.setData(b);
    resetHandler.sendMessage(msg);

    Context context = (Context) editmap.get("thisActivity");
                /**
                 * 如果有提示框,让提示框消失
                 */
                if(editmap.get("szsdialog")!=null){
                    AlertDialog testdialog = (AlertDialog) editmap.get("szsdialog");
                    if(testdialog!=null&&testdialog.isShowing()){
                        testdialog.setCancelable(true);
                        testdialog.dismiss();
                    }
                    editmap.remove("szsdialog");
                }

                //接下来给出提示信息
                TextView tishi = (TextView) editmap.get("tishi");
                if(tishi!=null){
                    tishi.setTextColor(android.graphics.Color.RED);
                    tishi.setText(bundle.getString("message"));
                }
                //Toast.makeText(context, bundle.getString("message"), 2000).show();
                /**
                 * 出错了发出声音提示
                 */
                SoundPlayUtils sound = new SoundPlayUtils();
                if(context!=null){
                    sound.init(context);
                    sound.play(1);
                    /**
                     * 如果出错了,给出震动提示
                     */
                    new VibrateHelp().vSimple(context, 500);
                }
                //对字段进行操作
                if(StringX.isEmpty(bundle.getString("check"))){
                    //获取那个字段检验失败
                    EditText thisedite = (EditText) editmap.get(bundle.get("check"));
                    if(thisedite!=null){
                        //清空当前字段
                        thisedite.setText("");
                        thisedite.requestFocus();//焦点的变化
                    }
                }

4个回答

出现空指针异常了。可以看看出错的时候,是不是有访问空指针了。

大傻逼
大傻逼
大傻逼
大傻逼
大傻逼
大傻逼
大傻逼

打断点,一步步调试。看看那出现了空指针。

关闭之前判断dialog是否为空 线程内操作有时候会引起dialog创建失败

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于Android中的各种Dialog
Android中的Dialog
关于android中的Dialog的tittle字数
Dialog mdialog;定义一个Dialogrn然后我使用mdialog.setTitle("xxxxxx");rn我想问的就是我们这个Dialog的title属性是否有字数限制,在我实际的应用中,当我们设置的title(也就是上面的xxxxx)字数过长的话,在真机或者模拟器上面跑起来会让title显示不完全,只是显示前几个字符,也没有后面出现省略号(...)什么的?rn有人遇到过这种情况么?有没有解决的方法呢,求指教,谢谢大家
关于Android中Dialog位置的设置
当自定义Dialog后,需要将其放到屏幕中的某个位置是,需要对其LayoutParams进行设置。 Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.dialog_layout); dialog.setTitle("Dialog"); Window window =
关于Android自定义Dialog细节问题
细节一 因为有几个人问过我:为什么我的Dialog,点击空白处不消失? 我让他们设置:dialog.setCanceledOnTouchOutside(true); 但是又说,还是不行,后来看了下他代码,原来要想要dialog在点击空白处消失,要在dialog.show();之前设置dialog.setCanceledOnTouchOutside(true)! 细节二 就是前段时
关于android studio开发中的两个错误
在使用android studio开发工程中,会遇到一些问题,很不幸,今天下午我就遇到了两个问题1. android-studio2-2遇到UNEXPECTED TOP-LEVEL ERROR: java.lang.OutOfMemoryError: GC overhead limit exceeded,然后会造成android studio一直在build.这是由于android studio 的
如何关闭一个THREAD?
我在写一个局域网内部的tcp communicate程序时,开了一个thread来监听来自网络的请求,并在Dispose函数中用Abort函数将它关闭。但是执行到Abort时总要出错:rn An unhandled exception of type “System。NullReference Exception“occured in *.exe。rn Additional information:Object referance not set to an instance of an object。rn这是怎么回事呢?后来我参考别人的程序将这个thread加入到一个HashTable对象中,再在Dispose函数中关闭,就没有再报错,但是这个thread并没有被关闭,每次都需要我在win2000的线程管理器中手动关闭。这究竟是怎么回事呢?还有HashTable类究竟是个什么类呢?rn
Thread无法关闭问题
当我们在Activity或者Service需要执行一些比较耗时的任务时,就会想到使用子线程Thread。这时候就是特别注意了,我们finish Activity或Service的时候就要先把线程停掉,否则系统是无法调用Activity或Service的onDestroy方法的。 很多人可能会想到使用stop方法来停止,我们看java文档就知道这个方法已经被遗弃了,即使你调用了也是没有用的,也达不
关于Thread的关闭方法
今天写一个列表音乐的播放,播发中通过thread持续监测播放进度,代码如下: new Thread(){}.start(); while(true){ if(isPlaying){ //去更新当前条目的进度 if(progress==100){ isPlaying=false; } } } 运行了一下,老铁,很nice。进度确实更新了,播放完毕该线程也不会继续调用了。 但是,
如何关闭一个thread?
我在写一个局域网内部的tcp communicate程序时,开了一个thread来监听来自网络的请求,并在Dispose函数中用Abort函数将它关闭。但是执行到Abort时总要出错:rn An unhandled exception of type “System。NullReference Exception“occured in *.exe。rn Additional information:Object referance not set to an instance of an object。rn这是怎么回事呢?后来我参考别人的程序将这个thread加入到一个HashTable对象中,再在Dispose函数中关闭,就没有再报错,但是这个thread并没有被关闭,每次都需要我在win2000的线程管理器中手动关闭。这究竟是怎么回事呢?还有HashTable类究竟是个什么类呢?
C#的Thread关闭问题
线程Thread t 设为全局的,那么关闭时 t.abort();就行了 ,那如果是一个局部变量,如何在其他方法中关闭这个线程呢。
android dialog 关闭
我在activity上弹出一个dialog 通过oncreatDialog()方法 请问怎么通过触摸屏幕 关闭dialog
jquery dialog 无法关闭
我用jqeruy dialog 写了一个弹出层的小程序,用 $(this).dialog("close");却无法关闭弹出层,但是父界面层的阴影消失了,父界面的所有控件都可以用,就是弹出层无法消失。改为$("#NewAdd").dialog("close");后依然是这样的。由于初次用dialog,请求高手帮忙解决,谢谢。。
dialog的关闭问题
我弹出了一个对话框,有个保存按钮,希望在点击保存的同时把dialog给关闭了[code=java] rn function save() rn window.returnValue="yanzhengma"; rn window.close(); rn [/code]rn但他无法执行,求大神帮忙
EasyUI 如何关闭dialog
在一个a中创建一个事件调用dialog 通过href引入了一个action 这个action处理完又跳转到了B页面 在B页面中有个确定按钮 我想在确定按钮点下去后关闭dialogrna页面rn[code=javascript] $('#newchild_department').dialog( rn title: '新建机构', rn width: 900, rn height: 300, rn closed: false, rn cache: false, rn href: 'create.action?parent.id='+parentId, rn modal: true [/code]rnrn上边的action处理完后回跳转到B页面rnb页面中有个表单,我想在表单提交成功后 同时页面的dialog也关闭。rnrn$('#newchild_department').dialog('close'); parent.document.getElecmentById("#newchild_department").dialog('close'); rnparent.$('#newchild_department').dialog('close'); rn这个几个办法我都试过了 不是不行就是直接把页面全部关了rnrn
Jquery Dialog关闭问题
var dg = new $.dialog(id: _id,page: url);rndg.ShowDialog();rn请问这种普通函数打开后的窗口怎么关闭?rn
dialog 怎么关闭
现在我有一个jar包,有一个弹出提示框是在里面写的,弹出对话框里面有确定或取消,但是jar包里面没有直接关闭提示框的方法。rn我现在要在代码里面用代码不通过点击确认或取消来关闭这个提示框,怎么搞??
关于“Dialog 的 关闭”
index.htmlrn[code=HTML]rn rn点击跳窗rn[/code]rn---------------------------------------------------------------rnrn---------------------------------------------------------------rn1.htmlrn[code=HTML]rn rn[/code]rn---------------------------------------------------------------rnrnrn请问一下,为什么,窗口不能关必,,哪位高手能不能帮一帮。
dialog关闭的问题,简单。
我有一个frame打开了几个非模态的dialog,现在想要在关闭frame前自动关闭那些dialog。在onclose里面需要加什么语句。我主要是得不到dialog的句柄。
jquery指定关闭dialog
使用jquery关闭正在打开的dialog,代码如下: $('#yourDivId').dialog('close');
jquery dialog的关闭事件
[code=javascript]$(document).on('submit', 'form', function() rn var url = this.action; rn $.post(url, $('form').serialize(), function(data) rn if (data.success == true) rn $('#registerpanel').dialog('close');rn refreshLoginPartial();rn else rn $('#registerpanel').html(data);rn rn );rn return false;rn );rnrn function refreshLoginPartial() rn $("#registerpanel").dialog(rn close: function() rn //局部刷新id='login'的内容rn rn );rn [/code]rnrndialog关闭事件后怎样刷新这部分的内容rn rn @Html.Partial("_LoginPartial")rn
自定义Dialog关闭事件?
在Dialog添加ListView后怎么实现点击ListView里面的Item关闭Dialog?
关闭线程Thread 解决进程中的问题
解决关闭主程序时,发现进程里总有一个.exe文件
Android 控制关闭Dialog
我们添加的按钮不论是用setNegativeButton还是用setPositiveButton添加的按钮,点击的时候,都会关闭对话框,但是我们的一 些实际需求,就需要保留这个对话框不动,例如输入校验码,密码之类的校验问题,如果用户输入错误,而关闭后弹出对话框,就很别扭了
如何关闭dialog
1、自己定义一个dialog或者form。rn可以在菜单事件中写rnw_my aa;rnaa.DoModal(); //打开formrnrn问题是,我要如何在菜单或者某个按钮中写代码,实现关闭打开的dialog或者form。rnrn2、dialog和form有什么区别?
dialog关闭 资源释放
这个是EVC的程序,它的原理和VC类似。现在遇到一个问题请各位大虾帮忙:rn我从第一个画面 dialog ID KO31P240 类名也是 KO31P240 title 付属品 1/10 按next rn[rn AfxGetMainWnd()->SetWindowText(DLGTitle2);rn UpdateData(FALSE);rn Ko31P241 dlg;rn dlg.DoModal(); rn]rn调转到第二个画面dialog ID KO31P241 类名也是 KO31P241 title 付属品 2/10 rn[rnBOOL Ko31P241::OnInitDialog() rnrn//1 rn //Close Windows ウィンドウを閉じるrn CWnd *pwnd = GetParent();rn if (pwnd)rn rn pwnd->PostMessage(WM_CLOSE,NULL,NULL);rn rnrnrn]rnrn关闭前面一个dialog。在PDA中,的确画面已经被关闭。可是事实上它的资源还是存在,没有释放,我想释放,该怎么释放,代码那里有错误,忘高手指点。rnrn在SP++ 里面显示还是存在 里面有两个资源ID 分别是 “付属品 1/10” “ 付属品 2/10”
如何关闭dialog对话框
我在singledocument中产生一个dialog,dialog没有button,我希望通过点标题栏上的关闭按钮关闭dialog,但用destroywindow和enddialog都会在程序运行时出错。rn我想知道,点击叉号时对应的是那个消息?又如何能安全的关闭dialog?rn
easyui关闭打开的dialog
easyui关闭dialog的方式: $('#keywordShowDiv').dialog('destroy'); $('#keywordShowDiv').dialog('close');-------这种方式只是将dialog隐藏了,如果是在新增或者修改的dialog用此种方式关闭后,再次打开dialog将使得打开的dialog混乱,甚至出现js错误; 通常在新增或修改的dia
dialog 弹窗显示和关闭
最近在公司改别人的一个项目  发现一个难点  其实这个点其实很简单 但是也让我想了很久,所以写一下  记住这个事件。事件主要来源自己了解的太少了。功底不是很好。   现在来了解一下  弹窗  弹窗自己做项目发现有三种提示性弹窗 dialog动态提示就 Prodialog自定义交互弹窗 Alertdialog 如果正在做弹窗的朋友可以了解一下   我了解的就这些  还是要多看书  功底要好啊  这都...
点击dialog空白处禁止关闭dialog
//点击空白处不关闭dialog dialog.setCancelable(false); dialog 完整代码package com.developer.jim.wizard.views; import android.app.Activity; import android.app.DialogFragment; import android.graphics.Color; import ...
关于android edittext 软键盘关闭问题
1.不能在onDestroy里写,要在finish之前写关闭方法!!!
请问一个dialog中的两个EditText判断及dialog关闭问题?
一个alertDialog中有两个EditText,和一个保存按钮,当点击保存时要对这个两个EditText中的数据进行判断是否为空,如果有一个为空则不能保存,界面仍在dialog中(dialog不关闭),只有当两个EditText都不空时,点保存按钮才能保存并关闭该dialog。请问如何实现?
NOTE: attach of thread 'Binder Thread #3' 错误
本人写了个ListView的测试程序,但最终结果显示不出来,用logcat提示:rn 04-04 07:14:26.308: INFO/AndroidRuntime(337): NOTE: attach of thread 'Binder Thread #3' failedrn 04-04 07:14:28.218: INFO/ActivityManager(60): Starting activity: Intent act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=gao.ListView/.ListViewTest rn 04-04 07:14:28.278: INFO/AndroidRuntime(345): NOTE: attach of thread 'Binder Thread #3' failedrn 我写的代码如下:rn ListViewTest.java代码:rn (1)package gao.ListView;rnrnimport java.util.ArrayList;rnimport java.util.HashMap;rnrnimport android.app.Activity;rnimport android.app.ListActivity;rnimport android.os.Bundle;rnimport android.widget.SimpleAdapter;rnrnpublic class ListViewTest extends ListActivity rn rn public void onCreate(Bundle savedInstanceState, String gao) rn super.onCreate(savedInstanceState);rn setContentView(R.layout.main);rn ArrayList< HashMap> list = new ArrayList< HashMap>();rn HashMap map1 = new HashMap();rn HashMap map2 = new HashMap();rn HashMap map3 = new HashMap();rn map1.put("user_name", "gao");rn map1.put("user_ip","192.168.0.1");rn map2.put("user_name", "yang");rn map2.put("user_ip", "192.168.0.2");rn map3.put("user_name","li");rn map3.put("uaer-ip","192.168.0.3");rn list.add(map1);rn list.add(map2);rn list.add(map3);rn SimpleAdapter listAdapter=new SimpleAdapter(this, list, R.layout.user,rn new String[]"user_name","user_ip", rn new int[]R.id.user_name,R.id.user_ip);rn setListAdapter(listAdapter);rn rnrnrnrn(2)main.xml代码:rn rnrn rnrnrn(3)user.xml的代码:rn rnrn rn rn rn rnrnrn小弟初学android,,请各位大侠帮忙,,,
有关于easyui中dialog关闭的问题
有关于easyui中dialog关闭的问题
java中如何设置Dialog关闭
import java.awt.*;rnimport java.awt.event.*;rnpublic class TestWindowClosingrn public static void main(String[] args) rn new FrameWindow("HELLO");rn rnrnclass FrameWindow extends Frame rn public static int i = 1; //设置计数器,计算窗口的数量,当界面没有显示窗口时退出系统rn FrameWindow(String s) rn super(s);rn setLayout(new FlowLayout());rn setBackground(Color.yellow);rn setBounds(300,300,400, 600);rn setVisible(true); rn Button bt = new Button("点击弹出窗口");rn this.add(bt);rn bt.addActionListener(new ButtonActionL());rn this.addWindowListener(rn new WindowAdapter() rn public void windowClosing(WindowEvent e) rn i--;//每调用一次关闭事件,窗口数量减少1rn setVisible(false);rn if(i == 0) rn System.exit(0);rn else rn rn rn );rn rn class ButtonActionL implements ActionListener rn public void actionPerformed(ActionEvent e) rn i++; //每调用一次,窗口数增1rn FrameWindow c = new FrameWindow("子窗口");rn c.setBounds(200,200,200,200);rn c.setBackground(Color.blue);rn c.setVisible(true); rn Dialog a = new Dialog(c,true);rn a.setVisible(true);rn a.addWindowListener(rn new WindowAdapter() rn public void windowClosing(WindowEvent e) rn setVisible(false);rn //System.exit(-1);rn rn );rn rn rnrn为什么无法关闭Dialog,请高手指点。
为什么Ajax中dialog关闭不了?
如题,一个引用了母版页的页面。dialog所在的div以及dialog的定义都写在母版页里面。这个页面加载的时候打开dialog,然后发送ajax查询数据,想要的效果就是利用ajax的complete事件来关闭这个dialog。发现关闭不了,可以进到complete事件的方法里,但就是关闭无效,显示“数据加载中,请稍等”的dialog死活不关了。以下是我页面代码[code=CSS][/code]rn
MFC中关闭一个Dialog程序崩溃
我在一个Dialog中,给一个编辑框加一个变量对应,然后关闭对话话框后程序就崩溃了,是什么原因呢?该怎么解决?
[thread + socket]错误求诊
主线程rninitInstance时候rnAfxbeginthread两个线程rnrn两个slave-thread分别在rninitInstance的时候rnCreate两个socket,rn一个:rnm_socket.Create(SOCK_STREAM);rn另一个线程:rnm_socket.Create(MSG_UDP_PORT,SOCK_DGRAM,NULL)rnrn程序启动时候出现读内存错误,经跟踪是在两个create上,两个create去掉就好了rn何故??求救!!rnrn两个socket我一定要的,要不纤尘都没有意义啦.rn大家救我!!!!rnrn AfxBeginThread(RUNTIME_CLASS(CClientThreadTcp));rnrnclass CClientThreadTcp : public CWinThreadrnrn DECLARE_DYNCREATE(CClientThreadTcp)rnprotected:rn CClientThreadTcp(); // protected constructor used by dynamicrncreationrnrn// Attributesrnpublic:rn CSocket m_socket;rnrn// Operationsrnpublic:rnrn// Overridesrn // ClassWizard generated virtual function overridesrn //AFX_VIRTUAL(CClientThreadTcp)rn public:rn virtual BOOL InitInstance();rn virtual int ExitInstance();rn //AFX_VIRTUALrnrn// Implementationrnprotected:rn virtual ~CClientThreadTcp();rnrn // Generated message map functionsrn //AFX_MSG(CClientThreadTcp)rn // NOTE - the ClassWizard will add and remove member functions here.rn //AFX_MSGrnrn DECLARE_MESSAGE_MAP()rnprivate:rnrn;rnrnBOOL CClientThreadTcp::InitInstance()rnrn // TODO: perform and per-thread initialization herern if (!AfxSocketInit())return FALSE;rn ((CLivingYouApp*)AfxGetApp())->m_TcpThreadID = AfxGetThread()->m_nThreadID;rn this->m_socket.Create();rn ````````````````这里出错,大哥们帮忙rn return TRUE;rnrn
菜鸟求助关于Android Dialog控件的一个问题~
这里有个问题想请教下论坛上的高手们:rn我想在厂商定义的Dialog下添加一个Button,比如下面这幅图:rn[img=https://img-bbs.csdn.net/upload/201308/06/1375788177_497981.jpg][/img]rnrn想在"确定"和"取消"2个Button下再添加一个Button(AlertDialog好像可以set3个button,但是好像是3个并排的),宽度和上面2个Button加起来一样,请问有办法吗?rnrn或者有什么间接可以实现的办法呢?没办法的话是不是要自己全部重新定义整个Dialog呢?再次感谢!!!
in thread "main" java.lang.NoClassDefFoundError 错误
in thread "main" java.lang.NoClassDefFoundError: Could not initialize class com.dao.SQLHelperrn at com.dao.BaseDAO.get(BaseDAO.java:27)rn at com.dao.usersDAO.get(usersDAO.java:8)rn at test.Test.main(Test.java:9)rn为什么无法初始化类呢?
current thread not owner 错误!!!!!
在一个项目中时不时出现current thread not owner 错误rnrn请教什么问题
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview