簡體   English   中英

刷新后台堆棧中存在的活動

[英]Refreshing the activities that are present in the back stack

我在操作欄上有一個“ 輸入您的詳細信息”選項作為操作項,並且通過擴展以下類,我將該選項設置為在所有活動中可見。

   public abstract class ActionActivity extends SherlockActivity {
        protected boolean mIsEnterDetailsScreen = true;
        protected userName = "";
        SessionManager session;

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {

             if(mIsEnterDetailsScreen)
             {
                 menu.add("Enter Your Details")
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
             }

             else 
             {
                 menu.add(userName)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
             }

            return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            //This uses the imported MenuItem from ActionBarSherlock
            switch(item.getItemId())
            {

            case 0:
                Intent intent = new Intent(ActionActivity.this,EnterDetails.class);
                startActivity(intent);
                return true;
            }
            return false;
        }

         @Override
            protected void onCreate(Bundle savedInstanceState) {


                  session = new SessionManager(getApplicationContext());

            sessionCheck();  // This method's body is separated for the easiness and pasted below.

                super.onCreate(savedInstanceState);


                getSupportActionBar().setHomeButtonEnabled(true);
            }

        }

因此,通過上面的代碼,如果用戶輸入詳細信息,我會將其保存在首選項中,同時設置mIsEnterDetailsScreen = false; 這樣該選項將不可見,並且從其輸入的詳細信息中獲取的用戶名也將可見。 這僅對以后開始的活動有效。 但不是以前的活動。 因此,我的疑問是如何刷新后退堆棧中的活動。 這樣,即使他按下了后退按鈕,在輸入詳細信息而不是輸入您的詳細信息選項后,即使在以前的活動中,也必須顯示username

假設如果用戶在第三個活動上單擊“ 輸入您的詳細信息”操作項,則更改將反映在以后的活動(4、5、6 ...)中,而不是在第一個活動和第二個活動中。 有什么方法可以刷新活動,以便更改得以持續。

這是ActionActivity中的sessionCheck()方法

 public void sessionCheck()
     {
         if(session.isLoggedIn())
         {
             mIsEnterDetailsScreen = false;

             HashMap<String, String> userHashMap = session.getUserDetails();

             // name
             String name = userHashMap.get(SessionManager.KEY_USER_NAME);


             userName = name;
         }

         else{

             mIsEnterDetailsScreen = true;


         }

     }

當用戶輸入詳細信息時,請將其保存在持久的位置,我建議使用SharedPreferences 然后在將位於Backstack中的Activity中重寫onResume並在其中加載詳細信息(例如,從SharedPreferences獲取)。

Android不使用onRefresh方法。

您必須在第一個活動上實現重寫方法onRefresh。

當您從“詳細信息”活動返回或關閉/完成第二個活動(即“輸入您的詳細信息”活動)時,將調用“第一個”活動的onRefresh方法。 那時,您可以從SharedPreference設置值。 這樣,您就可以在視圖上重新顯示“值”。

希望你明白我的意思。 隨時發表評論。

暫無
暫無

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

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