我试着调用另一个类的方法,它在同一个包中,但是当我在手机上测试时,它会强行关闭。
基本上我创建一个LocalSQLite类的对象,sqlite并使用sqlite.method() 下面是我的代码:
Sqlitetest2Activity.java
package com.test.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
public class Sqlitetest2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocalSQLite sqlite = new LocalSQLite();
sqlite.createTable();
}
}
LocalSQLite.java
package com.test.test;
import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.widget.Toast;
public class LocalSQLite extends Activity {
SQLiteDatabase mydb;
private static String DBNAME = "city.db"; // SQLITE DATABASE FILE NAME.
private static String TABLE = "citytable"; // TABLE NAME
/* CREATE TABLE IF NOT EXISTS */
public void createTable(){
try{
mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
mydb.execSQL("CREATE TABLE IF NOT EXISTS "+ TABLE +" (ID INTEGER PRIMARY KEY, CITY TEXT);");
mydb.close();
}catch(Exception e){
Toast.makeText(getApplicationContext(), "Error in creating table", Toast.LENGTH_LONG);
}
}
/* DROPS TABLE */
public void dropTable(){
try{
mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
mydb.execSQL("DROP TABLE " + TABLE);
mydb.close();
}catch(Exception e){
Toast.makeText(getApplicationContext(), "Error encountered while dropping table.", Toast.LENGTH_LONG);
}
}
/* THIS FUNCTION INSERTS DATA TO THE DATABASE */
public void insertIntoTable(String city_id, String city_name){
try{
mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
mydb.execSQL("INSERT INTO " + TABLE + "(ID, CITY) VALUES('"+city_id+"','"+city_name+"')");
mydb.close();
}catch(Exception e){
Toast.makeText(getApplicationContext(), "Error in inserting into table", Toast.LENGTH_LONG);
}
}
}
答案 0 :(得分:2)
您无法实例化Activity的类对象。要调用方法,您可以做的是 -
将方法设置为static,并使用LocalSQLite.createTable();
调用它我在你的LocalSQLite类中看到了另一个错误。当没有与之关联的屏幕时,您不必扩展Activity。所以只需删除扩展活动,这应该可以解决您的问题! : - )
如果您有任何问题,请与我们联系。
答案 1 :(得分:0)
阅读本文......
...尤其是关于Activities
的一点。 Activity
可能是一个Java类,但它是一个“特殊”类,不应该使用new
进行实例化。不仅如此,它还是一个用于提供UI的类,而不是您尝试将其用于SQLite处理的一般助手类。
尝试扩展SQLiteOpenHelper。
答案 2 :(得分:0)
您无法像这样实例化一个Activity。不要让LocalSQLite扩展Activity,它会正常工作。
答案 3 :(得分:0)
您是否尝试过Android提供的SQLiteOpenHelper课程用户?它将自动创建和更新您不必创建和对象的数据库,并自行运行它。
有人说......可能是导致错误的TEXT,我想你想要的是VARCHAR。