У меня есть активность, которая содержит все функции для управления моей базой данных, и я хочу, чтобы все другие действия использовались для этих функций при взаимодействии с базой данных. Ниже приведен пример моей проблемы.Функция вызова из другого вида деятельности
часы сценария: сценарий
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
}
Ошибка:
Не удается сделать статическую ссылку на не-STA tic метод createTable() от типа данных.
И когда я пытаюсь сделать метод статическим, это просто вызывает больше проблем.
Также, если я пытаюсь Data data = new Data(); data.createTable(); Я получаю исключение NullPointerException.
В чем проблема?
Объявите класс данных как статический – user2511882
Проверьте это [ссылка] (http://www.intertech.com/Blog/androids-application-class/) – amalBit