簡體   English   中英

從登錄活動中的回調更新主要活動ui

[英]update main activity ui from a callback in login activity

我在主要活動A和登錄活動B都有一個導航抽屜。 活動B有一個OnLogin callback在其中我從主要活動可以訪問的單例更新全局userinfo。 請注意,此OnLogin callback在線程中調用。

現在,我要更新主要活動導航抽屜標題ui(例如,用戶名和用戶圖標)。 我在主要活動A使用startActivityForResult從登錄活動B獲取標志,以指示發生了某些更改,然后在OnActivityResult更新UI。

我現在面臨的問題是,當活動B完成(通過觸發OnBackPressed在活動B ),則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
        }
     }
 }

LoginActivity.java

     OnLogin(String value)
     {
       UserInfo userInfo = Singleton.getInstance().getUserInfo();
       userInfo.setValue(value);
       userInfo.notifyObserver();
     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM