2012-05-04 20 views
0

以下是該場景。 我:在活動之間設置並獲取用戶名

登錄活動

會話在那裏我有方法getUsername和setUserName()

一個GET活動在那裏應該得到的用戶名。

當在登錄活動成功登錄我有這行代碼

public class MainActivity extends Activity { 
Session obj = new Session(); 

,然後在被稱爲tryLogin(另一種方法)我有此

obj.setUsername(mUsername); 

在會話活動我有這些代碼:

public class Session extends Application { 
String username; 
int userid; 


@Override 
public void onCreate() { 
    // TODO Auto-generated method stub 
    super.onCreate(); 
} 

public void setUsername(String user) 
{ 
    this.username = user; 
} 
public String getUsername() 
{ 
    return this.username; 
} 

並且在獲取用戶名的活動中我有這條線。

Session obj = new Session(); 
    username = obj.getUsername(); 

這不能正常工作。但如果我手動設置「用戶名」在會話活動的一些字符串這樣的:

public class Session extends Application { 
    String username = "manually set the string"; 

然後GET活動得到的用戶名就好了。 所以我認爲從登錄活動中將問題縮小到setUsername是安全的。

那麼,我在這裏做錯了什麼?

非常感謝。 // 的Android入門

回答

1

嘗試:

public class Session extends Application { 
    public static String username; 
在會話活動

+0

這實際工作延伸應用作爲

((Session) yourActivityName.getApplication()).setUserName("user Nmae"); 

在Session類方法的價值和訪問。 我改變它爲公共靜態,並像這樣訪問它: Session.username =「等等等等」 但我應該關心什麼user370305說一個新的對象重新創建或? – bubbly

+0

如果您在函數和類中都使用公共靜態,則不需要創建該類的實例。所以你甚至不需要Session obj = new Session()。你可以使用Session.username =「blah blah」。或Session.getUsername() – Tushar

+0

此外,請選擇此作爲接受的答案,如果它的工作。 – Tushar

0

我想你應該把它設置爲

((Session) yourActivityName.getApplication()).getUserName(); 
+0

((Session)this.getApplication())。setUsername(「user Nmae」); 這是我嘗試過的,但它仍然在這條線上崩潰。 還有什麼我需要聲明?爲什麼它會崩潰? – bubbly