2012-03-09 30 views
0

我希望將DatabaseHandler.java的值傳遞給mainActivity並將其顯示在textview上。來自其他類的Android HashMap返回值

DatabaseHandler.java

public HashMap<String, String> getUserDetails(){ 
    HashMap<String,String> user = new HashMap<String,String>(); 
    String selectQuery = "SELECT * FROM " + TABLE_LOGIN; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    // Move to first row 
    cursor.moveToFirst(); 
    if(cursor.getCount() > 0){ 
     user.put("name", cursor.getString(1)); 
     user.put("email", cursor.getString(2)); 
     user.put("uid", cursor.getString(3)); 
     user.put("created_at", cursor.getString(4)); 
    } 
    cursor.close(); 
    db.close(); 
    // return user 
    return user; 
} 

MainActivity.java

TextView lblid; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

lblid = (TextView) findViewById(R.id.showid); 
HashMap<string, string=""> details = getUserDetails(); 
     String nametext = details.getString("name"); 
     lblid.setText(nametext); 
} 
我無法寫正確的代碼,使其工作,我不斷收到 「語法錯誤令牌」

。請幫助我。 謝謝。

+0

這不會編譯:HashMap中<字符串,字符串= 「」> – 2012-03-09 08:45:34

回答

3

此線原因問題

HashMap<string, string=""> details = getUserDetails(); 

HashMap<string, string> details = getUserDetails(); 

用法的exaple替換它

Main.java

public class MainActivity extends Activity { 
... 
private DatabaseHandler dbh; 
... 
public void onCreate(Bundle) { 
dbh = new DatabaseHandler(...); 
... 
} 
... 
HashMap<String, String> details = dbh.getUserDetails(); 
... 
String nametext = details.get("name"); 
+0

T hanks,但現在我遇到**方法getUserDetails()未定義爲類型MainActivity **&**方法getString(String)未定義類型HashMap **什麼是問題?? – Eric 2012-03-09 09:11:06

+1

它因爲getUserDetails()是DatabaseHandler的方法而不是MainActivity。你需要在你的MainActivitiy中有DBH的實例。另外HashMap <>沒有方法getString(Object)但get(Object)。檢查更新示例 – 2012-03-09 09:24:48

+0

感謝您幫助Bartex並解釋。 – Eric 2012-03-09 10:11:38