2017-05-03 50 views
-1
切換回後不叫

我的應用程序只有兩個活動:mainpreferences的onCreate從喜好

PreferenceActivity(或在我的情況SettingsActivity),用戶可以改變一些東西,影響了MainActivity

這是我SettingsActivity

public class SettingsActivity extends AppCompatActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 

     getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit(); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       NavUtils.navigateUpFromSameTask(this); 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    public static class SettingsFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener { 
     @Override 
     public void onCreate(final Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      addPreferencesFromResource(R.xml.preferences); 
     } 

     @Override 
     public boolean onPreferenceChange(Preference preference, Object value) { 
      return false; 
     } 
    } 
} 

現在我有兩個問題:

  1. 當用戶按下HomeButton似乎主屏幕不調用onCreate這樣改變的偏好不是加載在主要活動中。我需要改變什麼,告訴android調用onCreate函數?
  2. 由於Android nougat中存在這些「活動更改動畫」,因此切換到新活動時,新屏幕種類爲slides in。但是當用戶按下HomeButton時,預期的動畫將是slide out,但它也是slide in。我該如何解決這個問題?
+1

使用'onResume'而不是'onCreate'。只要您的活動回到視圖中,它就會被調用。因此,無論您進入家庭活動的方式如何都要回到家中,它會調用'onResume'並應用用戶輸入的設置中的更改。 – Vucko

回答

2

說明了第一個問題:

有區別onCreateonResume之間

onCreate:推出首次活動。這裏是你可以初始化你的東西的地方。
onResume:用戶在另一活動轉到後臺後返回活動。 (在onPause叫上其他活動)

對於第二個問題,試試這個:

Intent intent = NavUtils.getParentActivityIntent(this); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
NavUtils.navigateUpTo(this, intent); 

而不是

NavUtils.navigateUpFromSameTask(this); 
+0

好像似乎工作謝謝你!關於第二個問題的任何線索? – Zoker

+0

不,不知道,但也許是動畫的目的 – Denny