我有一个包含控制我的数据库的所有功能的活动,我希望所有其他活动在与数据库交互时使用这些功能。以下是我的问题示例。
时钟脚本:
public class Clock extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_clock);
Data.createTable(); //<<<
}
//...
}
数据脚本:
public class Data extends Activity
{
SQLiteDatabase mydb;
private static String DBNAME = "SHIFTS.db";
private static String TABLE = "MY_SHIFTS";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_data);
}
public void createTable() //<<<
{
try
{
mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
mydb.execSQL("CREATE TABLE IF NOT EXISTS "+ TABLE +" (ID INTEGER PRIMARY KEY, STARTDATE TEXT, ENDDATE TEXT, LENGTH INTEGER, TYPE INTEGER);");
mydb.close();
}
catch(Exception e)
{
Toast.makeText(getApplicationContext(), "Error in creating table", Toast.LENGTH_LONG).show();
}
}
// ... lots more functions
}
错误信息:
无法对类型Data中的非静态方法createTable()进行静态引用。
当我尝试将方法设为静态时,会导致更多问题。
如果我尝试使用Data data = new Data(); data.createTable();,则会出现NullPointerException。
这里的问题是什么?