soft-summer-2021 / summer2021

程序设计实践 (2021夏季学期)
34 stars 6 forks source link

Android Studio在模拟器上运行app时一打开就闪退怎么解决 #77

Closed VeraMayLin closed 3 years ago

VeraMayLin commented 3 years ago

尝试运行app但是打开就闪退,代码也没有报错,应该怎么处理 image

hzy1721 commented 3 years ago

发一下项目文件?我帮你运行一下

VeraMayLin commented 3 years ago

[Uploading TimeSliceTest 2.zip…]()

hzy1721 commented 3 years ago

Uploading TimeSliceTest 2.zip…

没上传成功,用北航网盘吧。

VeraMayLin commented 3 years ago

https://bhpan.buaa.edu.cn:443/link/798BF34C3BBA5FC0C2653026A370375E 有效期限:2021-09-27 23:59

hzy1721 commented 3 years ago
截屏2021-08-29 下午3 20 12

AS 底部的 “Run” 部分可以查看调试信息,如果 APP 崩溃了 (闪退),能看到是什么异常。

闪退是因为 Schedule.java 里的 SQL 语句执行错误,有两个错误:

  1. isImportantisUrgent 没有初始化
    
    // 修改前
    public static String isImportant;
    public static String isUrgent;

// 修改后 public static String isImportant = "isImportant"; public static String isUrgent = "isUrgent";

2. SQL 语句末尾多加了一个逗号
```java
// 修改前
@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "CREATE TABLE "
            + Schedule.tableName
            + " (  "
            + "_id integer primary key autoincrement, "
            + Schedule.ScheduleText_1 + " TEXT, "
            + Schedule.isImportant + " integer, "
            + Schedule.isUrgent + " integer, "
            + Schedule.beginTime + " DATETIME, "
            + Schedule.ddl + " DATETIME, "  // 这里多加了一个逗号
            + ");";
    db.execSQL(sql);
}

// 修改后
@Override
public void onCreate(SQLiteDatabase db) {
    String sql = "CREATE TABLE "
            + Schedule.tableName
            + " (  "
            + "_id integer primary key autoincrement, "
            + Schedule.ScheduleText_1 + " TEXT, "
            + Schedule.isImportant + " integer, "
            + Schedule.isUrgent + " integer, "
            + Schedule.beginTime + " DATETIME, "
            + Schedule.ddl + " DATETIME "
            + ");";
    db.execSQL(sql);
}
VeraMayLin commented 3 years ago

修改之后闪退问题仍然存在 image

hzy1721 commented 3 years ago

执行什么操作后闪退的?我这里可以正常打开。

截屏2021-08-29 下午3 59 14

根据你发的图片,是常见的空指针异常,调用 setText 的变量是空的。

VeraMayLin commented 3 years ago

尝试打开模拟器运行就会直接闪退