问题
我写了一个简单的,基于Android的“闪存卡”程序,它从存储在设备上的文本文件(例如.csv,.xml)加载“字典”,并允许用户单步执行单词和定义。
我一直在尝试(不成功)实现一个菜单选项,用户可以在其中重新加载文本文件(例如,他们在文本文件中添加了单词并将其复制到他们的SD卡中)。文件都相对较小~30kB。
我的代码是批发的,基于Google提供的“Searchable Dictionary v2”示例应用及其SDK。它使用他们的DbHelper。
闪存卡位按预期工作但我无法重新加载文本文件。我想我有两个问题无法解决:
以下是我为解决问题而研究的StackOverflow条目。他们是有用的背景,但我无法用它们来解决我的问题。
代码
在菜单中,有两个选项。开始程序并重新加载字典文件。这是在启动时加载的简单启动活动中的onOptionMenuItemSelected:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
/*case INSERT_ID:
createNote();
return true;*/
case FLASH_CARDS:
Intent myIntent = new Intent(Cards.this, FlashCards.class);
startActivity(myIntent);
return true;
case RELOAD_FILE:
DbAdapter.reload();
}
return super.onOptionsItemSelected(item);
}
我从DbAdapter.reload()得到一个错误,我不明白“无法从CarteDbAdapter类型中对非静态方法reload()进行静态引用”
这是我添加到DB中的重载方法:
public void reload(){
SQLiteDatabase tableau = mDatabaseOpenHelper.getReadableDatabase();
int versionNum = tableau.getVersion();
Log.w(TAG, "Current Version: " + versionNum);
mDatabaseOpenHelper.onUpgrade(tableau, versionNum, versionNum+1);
tableau.close();
}
这让我在Eclipse中没有错误。
感谢您抽出宝贵时间阅读本文。我希望它也有助于其他初学者。
答案 0 :(得分:0)
我收到错误 DbAdapter.reload(),我没有 明白“不能制造静电 参考非静态方法 从类型CarteDbAdapter“
重新加载()
这是因为DbAdapter类中的reload()方法不是静态的,而是像静态一样调用它。 您有两个选项:
其中哪一个是正确的取决于DbAdapter类的设计。