小编use*_*500的帖子

如何访问和引用全局类中的变量和函数

我正在创建一个有五个活动的应用程序.我有一个类,其中包含在所有五个活动中使用的函数和变量.我在每个活动中创建了一个局部变量,像这样初始化类;

localclass = new globalclass(getResouces());
Run Code Online (Sandbox Code Playgroud)

我是android/java开发的新手,当我尝试了一些东西时,我对内存足迹感到疑惑.在第一个开始的活动中,localclass被设置为如上所述.然后,我尝试从其他活动中访问此变量,并在活动第二,第三等中成功完成此操作;

localclass = com.firstactivity.localclass;
Run Code Online (Sandbox Code Playgroud)

我使用的变量之一是对应用程序资源的引用.在第二次的活动中我不会得到这样的资源;

res = getResources();
Run Code Online (Sandbox Code Playgroud)

但是像这样;

res = com.firstactivity.localclass.res;
Run Code Online (Sandbox Code Playgroud)

只要变量是静态的,这就可以工作.我也以相同的方式访问globalclass中的函数.

这是不好的实践吗?

android class android-activity

1
推荐指数
1
解决办法
126
查看次数

SQLlite'没有这样的列'错误仅在全新安装的签名APK中

我找到了问题的原因,见下文!

简而言之,由于备份功能恢复了具有相同版本号的旧数据库方案,因此在我的SQLiteHelperClass中都没有调用onUpdate()或onCreate().

我遇到了一个我无法解决的奇怪问题.当我在模拟器中运行我的应用程序时,一切正常.当我在手机上将其作为apk-debug.apk运行时,一切正常,但当我尝试在手机上将其作为已签名的应用程序运行时,我收到此错误:

Error Code : 1 (SQLITE_ERROR)
Caused By : SQL(query) error or missing database.
(no such column: listId (code 1): , while compiling: SELECT * FROM mytable WHERE listId=100 ORDER BY id,name,conc ASC)
Run Code Online (Sandbox Code Playgroud)

如果我删除设置中的所有应用程序数据并重新运行应用程序,一切都在签名的应用程序版本中工作,尽管它最初是首次安装在手机上!

mytable是通过运行db.execSQL(DATABASE_CREATE_MY_TABLE)创建的:(列名是在其他地方设置的常量)

private static final String DATABASE_CREATE_MY_TABLE = "CREATE TABLE "
    + MY_TABLE + "("             
    + ID + " INTEGER, "
    + LIST_ID + " INTEGER, "
    + NAME + " STRING, "
    + CONC + " REAL, "
    + "PRIMARY KEY (" + ID …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

0
推荐指数
1
解决办法
248
查看次数