2012-04-05 79 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

相關問題