执行asynctask时应用程序崩溃

时间:2015-07-05 17:04:20

标签: android

执行asynctask时我的应用程序崩溃了。我尝试将数据从android发送到服务器,但我的应用程序在执行AsyncTask时崩溃 `input input = new input();         input.execute();

class func from(#year:Int, month:Int, day:Int) -> NSDate {
    var c = NSDateComponents()
    c.year = year
    c.month = month
    c.day = day

    var gregorian = NSCalendar(identifier:NSCalendarIdentifierGregorian)
    var date = gregorian!.dateFromComponents(c)
    return date!
}

这是我的完整代码http://pastebin.com/jRdxeQKG 这是我的logcat http://prntscr.com/7p3vbz

2 个答案:

答案 0 :(得分:1)

当您在db中致电new input()时,参考onCreate()为空。

解决方案:在致电db之前初始化new input()

 db = new SQLiteHandler(getApplicationContext());
 input input = new input();

顺便提一下,从设计的角度来看存在很多问题,但这将解决(崩溃)其中一个问题。

答案 1 :(得分:0)

1 使用小写字母开始您的班级名称是不好的做法。input应为Input,并且应该更具描述性。

2 您的数据库初始化应该在执行AsyncTask

的调用之前进行

3 在使用之前,您需要真正了解AsyncTask。您为AsyncTask

声明了三种泛型类型

public class input extends AsyncTask<String, String, String> {

但没有使用它们。您的doInBackground方法应该返回类型为NameValuePairJSONObject的实例。

AsyncTask的第一个泛型类型是params,这是您打算传递给doInBackground方法的内容。你说它是String但不传入input.execute();中的任何字符串这不是问题,因为你没有尝试使用args0,但如果你试试你的应用程序会崩溃至。我只是认为你应该首先阅读AsyncTask并了解基础知识。这将为你省去很多麻烦。欢呼。