Java 从登录活动中的回调更新主活动ui
我在主活动Java 从登录活动中的回调更新主活动ui,java,android,android-activity,Java,Android,Android Activity,我在主活动a和登录活动B中有一个导航抽屉。活动B有一个OnLogin回调,在该回调中,我从主活动可以访问的单例更新全局用户信息。请注意,此OnLogin回调是在线程中调用的 现在我想更新主活动导航抽屉标题ui(例如用户名和用户图标)。我在主活动A中使用startActivityForResult从登录活动B中获取一个标志,指示某些内容已更改,然后在活动结果中更新UI 我面临的问题是,当activityB完成时(由activityB中的OnBackPressed触发),不需要调用OnLogin回调
a
和登录活动B
中有一个导航抽屉。活动B
有一个OnLogin回调
,在该回调中,我从主活动可以访问的单例更新全局用户信息。请注意,此OnLogin回调
是在线程中调用的
现在我想更新主活动导航抽屉标题ui(例如用户名和用户图标)。我在主活动A
中使用startActivityForResult
从登录活动B
中获取一个标志,指示某些内容已更改,然后在活动结果中更新UI
我面临的问题是,当activityB
完成时(由activityB
中的OnBackPressed
触发),不需要调用OnLogin
回调。因此,onActivityResult
无需获取在UserInfo
中所做的更改。我的问题是,在这种情况下,更新UI的正确方法是什么 我最后做了什么
UserInfo.java
class UserInfo extends Observable {
private String value_;
public void setValue(String value)
{
value_ = value;
setChanged();
}
}
MainActivity.java
MainActivity extends AppCompatActivity implements Observer {
public void onCreate(Bundle savedInstanceState)
{
// other onCreate stuff
Singleton.getInstance().getUserInfo().addObserver(this);
// UserInfo initialization
...
// UI initialization
Singleton.getInstance().getUserInfo().notifyObservers();
}
public void update(Observable observable, Object data)
{
if (observable instanceof UserInfo)
{
//update ui
}
}
}
OnLogin(String value)
{
UserInfo userInfo = Singleton.getInstance().getUserInfo();
userInfo.setValue(value);
userInfo.notifyObserver();
}
LoginActivity.java
MainActivity extends AppCompatActivity implements Observer {
public void onCreate(Bundle savedInstanceState)
{
// other onCreate stuff
Singleton.getInstance().getUserInfo().addObserver(this);
// UserInfo initialization
...
// UI initialization
Singleton.getInstance().getUserInfo().notifyObservers();
}
public void update(Observable observable, Object data)
{
if (observable instanceof UserInfo)
{
//update ui
}
}
}
OnLogin(String value)
{
UserInfo userInfo = Singleton.getInstance().getUserInfo();
userInfo.setValue(value);
userInfo.notifyObserver();
}
我想用敏锐的眼光去观察你要找的东西。