2012-04-05 28 views
0

我对Java仍然有点新,并且直接在Android编程中使用,所以我在一些编程实践中有点困惑..我只想问我该如何调用这种方法从另一个类到我的OnCreate()?我的方法是在DBFunctions.java中。基本上,我会在我的游戏选项中使用它。Android - 从另一种方法获取价值

public void checkExistence(Cursor check) { 
    String sql = "SELECT * FROM option WHERE id = 1"; 
    check = db.rawQuery(sql, null);` 
} 

我想在我的OnCreate()中调用它。如果存在价值,我只想首先显示“存在价值”,否则“没有价值存在”。如果参数内的光标是正确的,也请纠正我。

回答

0

首先,您应该将Cursor声明为方法中的局部变量。获取游标后,检查值是否存在并返回布尔值。该方法的原型应该是这样的:

public boolean checkExistence() 

从onCreate方法,你会调用这个如下:

if (new DBFunctions().checkExistence()) { 
    // do something 
} else { 
    // do something else 
} 
0

如果你想打电话是被其他类中的任何方法,你可以参考叫它它的类名像下面:: :(作出这样的功能的静态)

ClassName.FunctionName()就是所有....

甚至你可以从你的函数返回强制值而不是使用你的返回类型...

+0

在我的情况下,它应该返回一个值..每当我的应用程序将启动,它将检查选项表。我应该怎么做我的OnCreate()? – 2012-04-05 18:18:06

+0

该值是字符串或布尔值 – 2012-04-05 18:19:57

0

要从另一个类中调用此方法,首先必须创建DBFunctions的实例。然后这个方法调用的语法将是这个样子:

Cursor mycursor = ...; 

DBFunctions myFunctions = new DBFunctions(); 
myFunctions.checkExistence(mycursor); 

另外,如果你想避免造成DBFunctions一个实例,可以将静态关键字添加到您的方法声明,如:

public static void checkExistence(Cursor check) { 
    String sql = "SELECT * FROM option WHERE id = 1"; 
    check = db.rawQuery(sql, null); 
} 

然后,您可以调用静态方法没有DBFunctions实例:

DBFunctions.checkExistence(mycursor); 
+0

我可以在onCreate()中声明mycursor时放一个null吗? – 2012-04-05 19:12:03

+0

我已经把null放在mycursor中,但它仍然强制关闭..我会放入什么值? – 2012-04-05 19:13:26

+0

您需要通过调用构造函数来实例化它,或者通过其他方式获取它。阅读Cursor文档[here](http://developer.android.com/reference/android/database/Cursor.html)以了解它的工作原理。至于使用null - 只要你没有从'check'进行调用,它应该可以工作。调用此方法后,您可能会遇到'NullPointerException'。 – Phil 2012-04-05 19:26:41

1

创建的实例,然后致电checkExistence()。例如:

DBFunctions dbfunc = new DBFunctions(); 
    if (dbfunc.checkExistence()) { 
     /* do something */ 
    } else { 
     /* do something else */ 
    } 

因此改变你的checkExistence()签名:返回一个布尔值和光标应该在你的方法中的局部变量:

public boolean checkExistence() { 
    boolean exists = false; 
    String sql = "SELECT * FROM option WHERE id = 1"; 
    Cursor cursor = db.rawQuery(sql, null); 
    exists = (cursor.getCount() > 0); 
    cursor.close(); 
    return exists; 
} 

另一种选择是static修改添加到checkExistence()并把它作为如下:

if (DBFunctions.checkExistence()) { 
    /* do something */ 
} else { 
    /* do something else */ 
} 
+0

它总是强制关闭。起初,我认为它不能处理空表,所以我添加一个数据,然后再试一次,但它仍然关闭..什么似乎是问题? – 2012-04-05 19:01:10

+0

把你的logcat。 – 2012-04-05 20:33:38

+0

@PhilipSy你在调用'checkExistence()'之前打开了你的数据库吗? – 2012-04-05 20:39:39

相关问题