我开始使用StackMob进行Android开发,但遇到了一个问题。在为用户创建登录界面后,我希望我的主页能够在顶部提示实际登录用户的名称。
所以我使用了getloggedInUser(Class<T>, stackMobCallBack<T>)方法来获取我的用户。第一个问题是我无法在回调外部获取此用户。因此,我创建了一个方法,从getloggedin user方法的回调中调用该方法。然后我又遇到了另一个问题:该方法的操作对我的视图没有影响。事实上,当主页提示时,文本保持不变(没有根据登录用户自适应更新)。奇怪的是,如果我减少应用程序然后恢复它,则文本会更新。以下是我的代码:
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StackMobAndroid.init(getApplicationContext(), 0,
"XXXXX.XXXXXX.XXXXX");
TextView welcomeText = (TextView) findViewById(R.id.welcomeHead);
User.getLoggedInUser(User.class,new StackMobQueryCallback<User>(){
public void failure(StackMobException e) {
// TODO Auto-generated method stub
}
public void success(List<User> list) {
User loggedUserf = list.get(0);
setMyAppUser(loggedUserf);
finish();
}
});
public void setMyAppUser(User user){
String welcome = welcomeText.getText().toString();
welcome = welcome+" "+user.getUsername();
welcomeText.setText(welcome);
}
}
我已经被这个问题困扰了很长时间,我猜测这个问题与回调是异步方法有关,但我尝试了各种方法,如使用invalidate或postinvalidate方法来修复我的视图...但都没有成功。