- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想快速提及这是一项家庭作业,但我只是在寻找方向。我的教授以前没有应用过 SQLite,所以他不确定该怎么做。该类正在执行 SharedPreference (我无法获取),但这是用于存储待办事项列表数据的另一个选项。
现在,当我点击 AddDo 类下的按钮“添加”任务时,它会抛出以下错误:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{net.example.name.dotoday/net.name.example.dotoday.AddDo}: java.lang.ClassCastException: net.example.name.dotoday.AddDo cannot be cast to android.app.Activity
编辑:这是实际按钮的类。这是我的主要任务列表所在的位置,因为 XML 已准备好数据,并且有一个用于添加新任务的按钮。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button addMainTask = (Button) findViewById(R.id.addMainTask);
addMainTask.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//This is being flagged as of now because the class type IS not Activity, but serializable.
startActivity(new Intent(main.this, AddDo.class));
}
});
这是我的类(class),用于添加任务(处于早期阶段):
package net.example.name.dotoday;
import java.io.Serializable;
public class AddDo implements Serializable {
//This is what will be transferred to the actual DB when I make a task.
public String doParentID, doTaskTitle, doStatus, doDueDate, doCompletedTask, doCalculatedProgress = "";
}
这是我的 DBHandler:
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import net.example.name.dotoday.AddDo;
import java.util.ArrayList;
import java.util.List;
public class DBHelper extends SQLiteOpenHelper {
private static final String TAG = "DbHelper";
// Database Info
private static final String TheDB = "TheDB";
private static final int DATABASE_VERSION = 1;
//DB Table Names
private static final String TABLE_ParentTask = "ParentTask";
private static final String TABLE_SubTask = "SubTask";
//ParentTask Table Columns
private static final String parentIDColumn = "_parentID";
private static final String taskTitleColumn = "_taskTitle";
private static final String statusColumn = "_status";
private static final String dueDateColumn = "_dueDate";
private static final String completedColumn = "_completedTask"; //When completion is 100%
private static final String calculatedProgressColumn = "_calculatedProgress"; //LONG VALUE WHEN CONVERTED.
//SubTask Table Columns
private static final String foreignkeyColumn = "_foreignkey";
private static final String childIDColumn = "_childID";
private static final String subTaskDescColumn = "_subTaskDesc";
private static final String subCompletedColumn = "_subCompleted"; // BOOL for individual tasks -- may not be implemented
/* -- Here comes the real fun, ya'll! -- */
private static DBHelper mDbHelper;
public static synchronized DBHelper getInstance(Context context) {
// Use the application context, which will ensure that you
// don't accidentally leak an Activity's context.
if (mDbHelper == null) {
mDbHelper = new DBHelper(context.getApplicationContext());
}
return mDbHelper;
}
/**
* Constructor should be private to prevent direct instantiation.
* Make a call to the static method "getInstance()" instead.
*/
private DBHelper(Context context) {
super(context, TheDB, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_ParentTask_TABLE = "CREATE TABLE " + TABLE_ParentTask +
"(" +
parentIDColumn + " INTEGER PRIMARY KEY ," +
taskTitleColumn + " TEXT," +
statusColumn + " BOOL," +
dueDateColumn+ " TEXT," +
completedColumn + " BOOL," +
calculatedProgressColumn + " REAL" +
")";
//CREATE THE PHYSICAL TABLE
db.execSQL(CREATE_ParentTask_TABLE);
/*String CREATE_SubTask_TABLE = "CREATE TABLE " + TABLE_SubTask +
"(" +
childID + " INTEGER PRIMARY KEY ," +
foreignkey + " INT," +
subTaskDesc + " TEXT," +
subCompleted + " BOOL" +
")";
//CREATE THE PHYSICAL TABLE
db.execSQL(CREATE_SubTask_TABLE);*/
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion != newVersion) {
// Simplest implementation is to drop all old tables and recreate them
db.execSQL("DROP TABLE IF EXISTS " + TABLE_ParentTask);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_SubTask);
onCreate(db);
}
}
public void insertTaskDetails(AddDo userData) {
SQLiteDatabase db = getWritableDatabase();
db.beginTransaction();
try {
ContentValues values = new ContentValues();
values.put(parentIDColumn, userData.doParentID);
values.put(taskTitleColumn, userData.doTaskTitle);
values.put(statusColumn, userData.doStatus);
values.put(dueDateColumn, userData.doDueDate);
values.put(completedColumn, userData.doCompletedTask);
values.put(calculatedProgressColumn, userData.doCalculatedProgress);
db.insertOrThrow(TABLE_ParentTask, null, values);
db.setTransactionSuccessful();
} catch (SQLException e) {
e.printStackTrace();
Log.d(TAG, "Error while trying to add post to database");
} finally {
db.endTransaction();
}
}
/*
fetch all data from UserTable
*/
public List<AddDo> getAllMainTasks() {
List<AddDo> usersdetail = new ArrayList<>();
String USER_DETAIL_SELECT_QUERY = "SELECT * FROM " + TABLE_ParentTask;
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery(USER_DETAIL_SELECT_QUERY, null);
try {
if (cursor.moveToFirst()) {
do {
AddDo userData = new AddDo();
userData.doParentID = cursor.getString(cursor.getColumnIndex(parentIDColumn));
userData.doTaskTitle = cursor.getString(cursor.getColumnIndex(taskTitleColumn));
userData.doStatus = cursor.getString(cursor.getColumnIndex(statusColumn));
userData.doDueDate = cursor.getString(cursor.getColumnIndex(dueDateColumn));
userData.doCompletedTask = cursor.getString(cursor.getColumnIndex(completedColumn));
userData.doCalculatedProgress = cursor.getString(cursor.getColumnIndex(calculatedProgressColumn));
usersdetail.add(userData);
} while (cursor.moveToNext());
}
} catch (Exception e) {
Log.d(TAG, "Error while trying to get posts from database");
} finally {
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
}
return usersdetail;
}
/*
Delete single row from ParentTask
*/
void deleteRow(String name) {
SQLiteDatabase db = getWritableDatabase();
try {
db.beginTransaction();
db.execSQL("delete from " + TABLE_ParentTask + " where parentid ='" + parentIDColumn + "'");
db.setTransactionSuccessful();
} catch (SQLException e) {
Log.d(TAG, "Error while trying to delete task detail");
} finally {
db.endTransaction();
}
}
}
我想知道这是否与 AddDo 实现可序列化有关?我可以将其换成具有标准 Activity 的不同 XML,并且它会起作用。
这里的任何指示将不胜感激。我和我的教授不知道为什么这是不想表现的,而且直到现在我们都没有使用过 SQLite。
非常感谢!
最佳答案
AddDo 没有扩展 Activity 类
使用下面的代码扩展使用 Activity 或 AppCompactActivity
public class AddDo extends Activity implements Serializable {
关于java - Android Studio-ClassCastException 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40182643/
我最近在/ drawable中添加了一些.gifs,以便可以将它们与按钮一起使用。这个工作正常(没有错误)。现在,当我重建/运行我的应用程序时,出现以下错误: Error: Gradle: Execu
Android 中有返回内部存储数据路径的方法吗? 我有 2 部 Android 智能手机(Samsung s2 和 s7 edge),我在其中安装了一个应用程序。我想使用位于这条路径中的 sqlit
这个问题在这里已经有了答案: What's the difference between "?android:" and "@android:" in an android layout xml f
我只想知道 android 开发手机、android 普通手机和 android root 手机之间的实际区别。 我们不能从实体店或除 android marketplace 以外的其他地方购买开发手
自Gradle更新以来,我正在努力使这个项目达到标准。这是一个团队项目,它使用的是android-apt插件。我已经进行了必要的语法更改(编译->实现和apt->注释处理器),但是编译器仍在告诉我存在
我是android和kotlin的新手,所以请原谅要解决的一个非常简单的问题! 我已经使用导航体系结构组件创建了一个基本应用程序,使用了底部的导航栏和三个导航选项。每个导航选项都指向一个专用片段,该片
我目前正在使用 Facebook official SDK for Android . 我现在正在使用高级示例应用程序,但我不知道如何让它获取应用程序墙/流/状态而不是登录的用户。 这可能吗?在那种情
我在下载文件时遇到问题, 我可以在模拟器中下载文件,但无法在手机上使用。我已经定义了上网和写入 SD 卡的权限。 我在服务器上有一个 doc 文件,如果用户单击下载。它下载文件。这在模拟器中工作正常但
这个问题在这里已经有了答案: What is the difference between gravity and layout_gravity in Android? (22 个答案) 关闭 9
任何人都可以告诉我什么是 android 缓存和应用程序缓存,因为当我们谈论缓存清理应用程序时,它的作用是,缓存清理概念是清理应用程序缓存还是像内存管理一样主存储、RAM、缓存是不同的并且据我所知,缓
假设应用程序 Foo 和 Eggs 在同一台 Android 设备上。任一应用程序都可以获取设备上所有应用程序的列表。一个应用程序是否有可能知道另一个应用程序是否已经运行以及运行了多长时间? 最佳答案
我有点困惑,我只看到了从 android 到 pc 或者从 android 到 pc 的例子。我需要制作一个从两部手机 (android) 连接的 android 应用程序进行视频聊天。我在想,我知道
用于使用 Android 以编程方式锁定屏幕。我从 Stackoverflow 之前关于此的问题中得到了一些好主意,并且我做得很好,但是当我运行该代码时,没有异常和错误。而且,屏幕没有锁定。请在这段代
文档说: android:layout_alignParentStart If true, makes the start edge of this view match the start edge
我不知道这两个属性和高度之间的区别。 以一个TextView为例,如果我将它的layout_width设置为wrap_content,并将它的width设置为50 dip,会发生什么情况? 最佳答案
这两个属性有什么关系?如果我有 android:noHistory="true",那么有 android:finishOnTaskLaunch="true" 有什么意义吗? 最佳答案 假设您的应用中有
我是新手,正在尝试理解以下 XML 代码: 查看 developer.android.com 上的文档,它说“starStyle”是 R.attr 中的常量, public static final
在下面的代码中,为什么当我设置时单选按钮的外观会发生变化 android:layout_width="fill_parent" 和 android:width="fill_parent" 我说的是
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
假设我有一个函数 fun myFunction(name:String, email:String){},当我调用这个函数时 myFunction('Ali', 'ali@test.com ') 如何
我是一名优秀的程序员,十分优秀!