2013-01-07 1 views
0

나는 을 가지고 있습니다. 작업 항목에 작업 표시 줄에 옵션을 입력하고 아래 옵션을 확장하여 모든 액티비티에 해당 옵션을 표시하도록 설정합니다. 사용자가 정보를 입력하면백 스택에있는 액티비티 새로 고침

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이 표시된 후 이전 활동에도 표시되어야합니다. 세부 사항을 입력하십시오. 옵션을 입력하십시오.

사용자가 클릭하면 3 번째 활동의 세부 항목을 입력하고 변경 사항은 이후 활동 (4, 5, 6 ....)에 반영되지만 1 차 활동 및 2 차 활동에는 반영되지 않습니다. 변경 사항이 지속되도록 활동을 새로 고치는 방법이 있습니까?

이 첫 번째 활동에 대한 재정의 방법을 onRefresh 구현해야한다 ActionActivity

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; 


     } 

    } 

답변

0

에서 sessionCheck() 방법이다.

세부 활동을 닫거나 두 번째 활동을 닫거나 끝내면 (즉 내 세부 활동 입력) 첫 번째 활동의 onRefresh 메소드가 호출됩니다. 이때 SharedPreference에서 Value를 설정할 수 있습니다. 따라서 여러분은 여러분의 견해에 대해 가치를 다시 얻을 수 있습니다.

희망이 있습니다. 의견을 언제든지 보내주십시오.

+0

미안하지만, 나는 당신을 얻지 못했습니다. 나는 변화가 현재 활동에도 반영되기를 바란다. – rick

+0

예. 가능합니다. 이전 활동에서 onRefresh 메소드를 작성하십시오. 메시지를 건배하려면 코드를 넣으십시오. 이제 앱을 실행하고 확인하십시오. 다음 활동에서 이전 활동으로 되돌아 오는 동안 토스트 디스플레이가 표시됩니다. 희망을 얻었 으면합니다. –

1

사용자가 세부 정보를 입력하고이를 어딘가에 저장하면 SharedPreferences을 사용하는 것이 좋습니다. 그런 다음 다시 스택에있는 활동에서 onResume을 덮어 쓰고 여기에 세부 정보 (예 : SharedPreferences)를로드하십시오.

Android는 onRefresh 방법을 사용하지 않습니다.

+0

답변 해 주셔서 감사합니다. 또한 내가 언급 한 것처럼 SharedPreferences를 사용하고 있습니다. 나는 현재의 활동에도 변화가 반영되기를 바란다. 제발 제안 할 수 있니? – rick

+0

이전에 작성한 활동의 ​​옵션 메뉴에서 변경 사항을 표시하려면'onPrepareOptionsMenu'를 사용해야합니다. 위의 예제에서'onCreateOptionsMenu'에있는 것들을 재사용 할 수 있습니다. 단, 이전 액티비티에 private 변수가 없으므로 환경 설정에서 사용자 이름을로드해야합니다. – Ralgha

+0

+1. 나는 여분의 코드로 내 질문을 편집했다. 지금 확인하고 제안 해 주시겠습니까? – rick

관련 문제