【发布时间】:2021-05-25 12:47:58
【问题描述】:
我在其他页面中有很多此错误,但此错误拒绝显示下一页。这是我的错误。此错误“无法投射”实际上出现在多个页面上。这是来自我的编码或数据库的错误吗?提前致谢
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.prototype, PID: 5537
java.lang.ClassCastException: android.app.Application cannot be cast to com.example.TaskaKemasNurSurya.ApplicationContext
at com.example.TaskaKemasNurSurya.ModifyAttandance$3.onClick(ModifyAttandance.java:58)
at android.view.View.performClick(View.java:5610)
at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)
at android.view.View$PerformClick.run(View.java:22265)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
这是我的代码
@Override
public void onClick(View arg0) {
DBAdapter dbAdapter = new DBAdapter(ModifyAttandance.this);
ArrayList<AttendanceBean> attendanceBeanList=dbAdapter.getAllAttendanceByStudent();
((ApplicationContext)ModifyAttandance.this.getApplicationContext()).setAttendanceBeanList(attendanceBeanList);
Intent intent = new Intent(ModifyAttandance.this,ViewAttendancePerStudentActivity.class);
startActivity(intent);
}
});
这个来自数据库
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import androidx.annotation.Nullable;
import java.util.ArrayList;
public class DBAdapter extends SQLiteOpenHelper {
// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "Attendance";
// Contacts table name
private static final String STUDENT_INFO_TABLE = "student_table";
private static final String ATTENDANCE_SESSION_TABLE = "attendance_session_table";
private static final String ATTENDANCE_TABLE = "attendance_table";
// Contacts Table Columns names
private static final String KEY_STUDENT_MYKID = "student_mykid";
private static final String KEY_STUDENT_NAME = "student_name";
private static final String KEY_STUDENT_MO_NO = "student_mobilenumber";
private static final String KEY_STUDENT_ADDRESS = "student_address";
private static final String KEY_STUDENT_YEAR = "student_year";
private static final String KEY_ATTENDANCE_SESSION_ID = "attendance_session_id";
private static final String KEY_ATTENDANCE_SESSION_DATE = "attendance_session_date";
private static final String KEY_ATTENDANCE_SESSION_YEAR = "attendance_session_year";
private static final String KEY_SESSION_ID = "attendance_session_id";
private static final String KEY_ATTENDANCE_STUDENT_MYKID = "attendance_student_mykid";
private static final String KEY_ATTENDANCE_STATUS = "attendance_status";
public DBAdapter(@Nullable Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String queryStudent="CREATE TABLE "+ STUDENT_INFO_TABLE +" (" +
KEY_STUDENT_MYKID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_STUDENT_NAME + " TEXT, " +
KEY_STUDENT_MO_NO + " TEXT, " +
KEY_STUDENT_ADDRESS + " TEXT," +
KEY_STUDENT_YEAR + " INTEGER " + ")";
Log.d("queryStudent",queryStudent );
String queryAttendanceSession="CREATE TABLE "+ ATTENDANCE_SESSION_TABLE +" (" +
KEY_ATTENDANCE_SESSION_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_ATTENDANCE_SESSION_DATE + " DATE," +
KEY_ATTENDANCE_SESSION_YEAR + " INTEGER" + ")";
Log.d("queryAttendanceSession",queryAttendanceSession );
String queryAttendance="CREATE TABLE "+ ATTENDANCE_TABLE +" (" +
KEY_SESSION_ID + " INTEGER, " +
KEY_ATTENDANCE_STUDENT_MYKID + " INTEGER, " +
KEY_ATTENDANCE_STATUS + " TEXT " + ")";
Log.d("queryAttendance",queryAttendance );
try
{
db.execSQL(queryStudent);
db.execSQL(queryAttendanceSession);
db.execSQL(queryAttendance);
}
catch (Exception e) {
e.printStackTrace();
Log.e("Exception", e.getMessage());
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
String queryStudent="CREATE TABLE "+ STUDENT_INFO_TABLE +" (" +
KEY_STUDENT_MYKID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_STUDENT_NAME + " TEXT, " +
KEY_STUDENT_MO_NO + " TEXT, " +
KEY_STUDENT_ADDRESS + " TEXT," +
KEY_STUDENT_YEAR + " TEXT " + ")";
Log.d("queryStudent",queryStudent );
String queryAttendanceSession="CREATE TABLE "+ ATTENDANCE_SESSION_TABLE +" (" +
KEY_ATTENDANCE_SESSION_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_ATTENDANCE_SESSION_DATE + " TEXT," +
KEY_ATTENDANCE_SESSION_YEAR + " INTEGER" +")";
Log.d("queryAttendanceSession",queryAttendanceSession );
String queryAttendance="CREATE TABLE "+ ATTENDANCE_TABLE +" (" +
KEY_SESSION_ID + " INTEGER, " +
KEY_ATTENDANCE_STUDENT_MYKID + " INTEGER, " +
KEY_ATTENDANCE_STATUS + " TEXT " + ")";
Log.d("queryAttendance",queryAttendance );
try
{
db.execSQL(queryStudent);
db.execSQL(queryAttendanceSession);
db.execSQL(queryAttendance);
}
catch (Exception e) {
e.printStackTrace();
Log.e("Exception", e.getMessage());
}
}
public void addStudent(StudentBean studentBean) {
SQLiteDatabase db = this.getWritableDatabase();
String query = "INSERT INTO student_table (student_name,student_mobilenumber,student_address,student_year) values ('"+
studentBean.getStudent_name()+"', '"+
studentBean.getStudent_mobilenumber()+"', '"+
studentBean.getStudent_address()+"', '"+
studentBean.getStudent_year()+"')";
Log.d("query", query);
db.execSQL(query);
db.close();
}
public ArrayList<StudentBean> getAllStudent()
{
ArrayList<StudentBean> list = new ArrayList<StudentBean>();
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM student_table";
Cursor cursor = db.rawQuery(query, null);
if(cursor.moveToFirst())
{
do{
StudentBean studentBean = new StudentBean();
studentBean.setStudent_mykid(Integer.parseInt(cursor.getString(0)));
studentBean.setStudent_name(cursor.getString(1));
studentBean.setStudent_mobilenumber(cursor.getString(2));
studentBean.setStudent_address(cursor.getString(3));
studentBean.setStudent_year(cursor.getString(4));
list.add(studentBean);
}while(cursor.moveToNext());
}
return list;
}
public ArrayList<StudentBean> getAllStudentByBranchYear(String branch,String year)
{
ArrayList<StudentBean> list = new ArrayList<StudentBean>();
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM student_table where student_year='"+year+"'";
Cursor cursor = db.rawQuery(query, null);
if(cursor.moveToFirst())
{
do{
StudentBean studentBean = new StudentBean();
studentBean.setStudent_mykid(Integer.parseInt(cursor.getString(0)));
studentBean.setStudent_name(cursor.getString(1));
studentBean.setStudent_mobilenumber(cursor.getString(2));
studentBean.setStudent_address(cursor.getString(3));
studentBean.setStudent_year(cursor.getString(4));
list.add(studentBean);
}while(cursor.moveToNext());
}
return list;
}
public StudentBean getStudentByMykid(int studentMykid)
{
StudentBean studentBean = new StudentBean();
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM student_table where student_id="+studentMykid;
Cursor cursor = db.rawQuery(query, null);
if(cursor.moveToFirst())
{
do{
studentBean.setStudent_mykid(Integer.parseInt(cursor.getString(0)));
studentBean.setStudent_name(cursor.getString(1));
studentBean.setStudent_mobilenumber(cursor.getString(2));
studentBean.setStudent_address(cursor.getString(3));
studentBean.setStudent_year(cursor.getString(4));
}while(cursor.moveToNext());
}
return studentBean;
}
public void deleteStudent(int studentMykid) {
SQLiteDatabase db = this.getWritableDatabase();
String query = "DELETE FROM student_table WHERE student_id="+studentMykid ;
Log.d("query", query);
db.execSQL(query);
db.close();
}
//attendance session Table crud
public int addAttendanceSession(AttendanceSessionBean attendanceSessionBean) {
SQLiteDatabase db = this.getWritableDatabase();
String query = "INSERT INTO attendance_session_table (attendance_session_year,attendance_session_date) values ('"+
attendanceSessionBean.getAttendance_session_date()+"', '"+
attendanceSessionBean.getAttendance_session_year()+"')";
Log.d("query", query);
db.execSQL(query);
String query1= "select max(attendance_session_id) from attendance_session_table";
Cursor cursor = db.rawQuery(query1, null);
if(cursor.moveToFirst())
{
int sessionId = Integer.parseInt(cursor.getString(0));
return sessionId;
}
db.close();
return 0;
}
public ArrayList<AttendanceSessionBean> getAllAttendanceSession()
{
ArrayList<AttendanceSessionBean> list = new ArrayList<AttendanceSessionBean>();
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM attendance_session_table";
Cursor cursor = db.rawQuery(query, null);
if(cursor.moveToFirst())
{
do{
AttendanceSessionBean attendanceSessionBean = new AttendanceSessionBean();
attendanceSessionBean.setAttendance_session_id(Integer.parseInt(cursor.getString(0)));
attendanceSessionBean.setAttendance_session_date(cursor.getString(1));
attendanceSessionBean.setAttendance_session_year(cursor.getString(2));
list.add(attendanceSessionBean);
}while(cursor.moveToNext());
}
return list;
}
public void deleteAttendanceSession(int attendanceSessionId) {
SQLiteDatabase db = this.getWritableDatabase();
String query = "DELETE FROM attendance_session_table WHERE attendance_session_id="+attendanceSessionId ;
Log.d("query", query);
db.execSQL(query);
db.close();
}
//attendance crud
public void addNewAttendance(AttendanceBean attendanceBean) {
SQLiteDatabase db = this.getWritableDatabase();
String query = "INSERT INTO attendance_table values ("+
attendanceBean.getAttendance_session_id()+", "+
attendanceBean.getAttendance_student_mykid()+", '"+
attendanceBean.getAttendance_status()+"')";
Log.d("query", query);
db.execSQL(query);
db.close();
}
public ArrayList<AttendanceBean> getAttendanceBySessionID(AttendanceSessionBean attendanceSessionBean)
{
int attendanceSessionId=0;
ArrayList<AttendanceBean> list = new ArrayList<AttendanceBean>();
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM attendance_session_table where attendance_session_year='"+attendanceSessionBean.getAttendance_session_year()+"'" +
" AND attendance_session_date='"+attendanceSessionBean.getAttendance_session_date();
Cursor cursor = db.rawQuery(query, null);
if(cursor.moveToFirst())
{
do{
attendanceSessionId=(Integer.parseInt(cursor.getString(0)));
}while(cursor.moveToNext());
}
String query1="SELECT * FROM attendance_table where attendance_session_id=" + attendanceSessionId+" order by attendance_student_id";
Cursor cursor1 = db.rawQuery(query1, null);
if(cursor1.moveToFirst())
{
do{
AttendanceBean attendanceBean = new AttendanceBean();
attendanceBean.setAttendance_session_id(Integer.parseInt(cursor1.getString(0)));
attendanceBean.setAttendance_student_mykid(Integer.parseInt(cursor1.getString(1)));
attendanceBean.setAttendance_status(cursor1.getString(2));
list.add(attendanceBean);
}while(cursor1.moveToNext());
}
return list;
}
public ArrayList<AttendanceBean> getTotalAttendanceBySessionID(AttendanceSessionBean attendanceSessionBean)
{
int attendanceSessionId=0;
ArrayList<AttendanceBean> list = new ArrayList<AttendanceBean>();
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM attendance_session_table where attendance_session_year='"+"'";
Cursor cursor = db.rawQuery(query, null);
if(cursor.moveToFirst())
{
do{
attendanceSessionId=(Integer.parseInt(cursor.getString(0)));
String query1="SELECT * FROM attendance_table where attendance_session_id=" + attendanceSessionId+" order by attendance_student_id";
Cursor cursor1 = db.rawQuery(query1, null);
if(cursor1.moveToFirst())
{
do{
AttendanceBean attendanceBean = new AttendanceBean();
attendanceBean.setAttendance_session_id(Integer.parseInt(cursor1.getString(0)));
attendanceBean.setAttendance_student_mykid(Integer.parseInt(cursor1.getString(1)));
attendanceBean.setAttendance_status(cursor1.getString(2));
list.add(attendanceBean);
}while(cursor1.moveToNext());
}
AttendanceBean attendanceBean = new AttendanceBean();
attendanceBean.setAttendance_session_id(0);
attendanceBean.setAttendance_status("Date : " + cursor.getString(4));
list.add(attendanceBean);
}while(cursor.moveToNext());
}
return list;
}
public ArrayList<AttendanceBean> getAllAttendanceByStudent()
{
ArrayList<AttendanceBean> list = new ArrayList<AttendanceBean>();
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT attendance_student_mykid,count(*) FROM attendance_table where attendance_status='P' group by attendance_student_mykid";
Log.d("query", query);
Cursor cursor = db.rawQuery(query, null);
if(cursor.moveToFirst())
{
do{
Log.d("studentId","studentId:"+cursor.getString(0)+", Count:"+cursor.getString(1));
AttendanceBean attendanceBean = new AttendanceBean();
attendanceBean.setAttendance_student_mykid(Integer.parseInt(cursor.getString(0)));
attendanceBean.setAttendance_session_id(Integer.parseInt(cursor.getString(1)));
list.add(attendanceBean);
}while(cursor.moveToNext());
}
return list;
}
/*public ArrayList<AttendanceBean> getAllAttendanceBySessionID(int sessionId)
{
ArrayList<AttendanceBean> list = new ArrayList<AttendanceBean>();
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM attendance_table where attendance_session_id=" + sessionId;
Cursor cursor = db.rawQuery(query, null);
if(!cursor.moveToFirst())
{
do{
AttendanceBean attendanceBean = new AttendanceBean();
attendanceBean.setAttendance_session_id(Integer.parseInt(cursor.getString(0)));
attendanceBean.setAttendance_student_id(Integer.parseInt(cursor.getString(1)));
attendanceBean.setAttendance_status(cursor.getString(2));
list.add(attendanceBean);
}while(cursor.moveToNext());
}
return list;
}*/
// Creating Tables
/*@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_User_Info_TABLE = "CREATE TABLE " + TABLE_INFO_USER + "("
+ KEY_ID + " INTEGER PRIMARY KEY, " + KEY_NAME + " TEXT, "+ " +KEY_MO_NO +" TEXT, "
+KEY_EMAIL +" TEXT, " +KEY_USERNAME +" TEXT, " + KEY_PASSWORD +" TEXT " + ")";
Log.d("rupali",CREATE_User_Info_TABLE );
db.execSQL(CREATE_User_Info_TABLE);
}
// Upgrading database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_INFO_USER);
// Create tables again
onCreate(db);
}
*//**
* All CRUD(Create, Read, Update, Delete) Operations
*//*
void addUserInfo(UserInfo userinfo) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_FIRSTNAME, userinfo.getUser_Firstname()); // Name
values.put(KEY_LASTNAME, userinfo.getUser_Lastname()); // Name
values.put(KEY_MO_NO, userinfo.getUser_MobileNo()); // Contact Phone
values.put(KEY_EMAIL, userinfo.getUser_EmailId());
values.put(KEY_USERNAME, userinfo.getUser_Username());
values.put(KEY_PASSWORD, userinfo.getUser_Password());
// Inserting Row
db.insert(TABLE_INFO_USER, null, values);
//2nd argument is String containing nullColumnHack
db.close(); // Closing database connection
}
// Getting single contact
UserInfo getUserInfo(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_INFO_USER, new String[] { KEY_ID,
KEY_FIRSTNAME, KEY_LASTNAME,KEY_MO_NO, KEY_EMAIL, KEY_USERNAME, KEY_PASSWORD }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
UserInfo userinfo = new UserInfo(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4),cursor.getString(5),cursor.getString(6));
// return contact
return userinfo;
}
public UserInfo validateUser(String username, String password)
{
SQLiteDatabase db = this.getReadableDatabase();
String query = "Select * from User_Info_Table WHERE User_Username='"+ username +"' AND User_Password='"+password+"'";
Log.d("Rupali", "Login QUERY:" + query);
Cursor cursor = db.rawQuery(query, null);
if(!cursor.moveToFirst())
{
Log.d("Rupali", "cursor is null.. returing NULL");
return null;
}
Log.d("Rupali", "cursor is NOT null.. we got user data...");
UserInfo userinfo = new UserInfo(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4),cursor.getString(5),cursor.getString(6));
return userinfo;
}
// Updating single contact
public int updateUserPassword(UserInfo userinfo) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_PASSWORD, userinfo.getUser_Password());
// updating row
return db.update(TABLE_INFO_USER, values, KEY_ID + " = ?",
new String[] { String.valueOf(userinfo.getUser_id()) });
}
public int updateUserContact(UserInfo userinfo) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_MO_NO, userinfo.getUser_MobileNo());
values.put(KEY_EMAIL, userinfo.getUser_EmailId());
// updating row
return db.update(TABLE_INFO_USER, values, KEY_ID + " = ?",
new String[] { String.valueOf(userinfo.getUser_id()) });
}
//veiw details
public UserInfo viewUserInfo(String id) {
SQLiteDatabase db = this.getReadableDatabase();
String query = "Select * from User_Info_Table WHERE id='"+id+"'";
Cursor cursor = db.rawQuery(query, null);
if(!cursor.moveToFirst())
{
Log.d("Rupali", "cursor is null.. returing NULL");
return null;
}
Log.d("Rupali", "cursor is NOT null.. we got user data...");
UserInfo userinfo = new UserInfo(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4),cursor.getString(5),cursor.getString(6));
// return contact
return userinfo;
}
// Getting All users
public List<UserInfo> getAllUserInfo() {
List<UserInfo> userinfolist = new ArrayList<UserInfo>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_INFO_USER;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
UserInfo userinfo=new UserInfo();
userinfo.setUser_id(Integer.parseInt(cursor.getString(0)));
userinfo.setUser_Lastname(cursor.getString(2));
userinfo.setUser_Username(cursor.getString(5));
userinfo.setUser_Firstname(cursor.getString(1));
// Adding contact to list
userinfolist.add(userinfo);
} while (cursor.moveToNext());
}
// return contact list
return userinfolist;
}
// Deleting single contact
public void deleteUser(UserInfo userinfo) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_INFO_USER, KEY_ID + " = ?",
new String[] { String.valueOf(userinfo.getUser_id()) });
db.close();
}
*/
}
这个来自出席豆
public class AttendanceBean {
private int attendance_session_id;
private int attendance_student_mykid;
private String attendance_status;
public int getAttendance_session_id() {
return attendance_session_id;
}
public void setAttendance_session_id(int attendance_session_id) {
this.attendance_session_id = attendance_session_id;
}
public int getAttendance_student_mykid() {
return attendance_student_mykid;
}
public void setAttendance_student_mykid(int attendance_student_id) {
this.attendance_student_mykid = attendance_student_id;
}
public String getAttendance_status() {
return attendance_status;
}
public void setAttendance_status(String attendance_status) {
this.attendance_status = attendance_status;
}
}
【问题讨论】:
标签: android-studio