先在 AndroidManifest.xml 設定 activity 關係:
<application ...> <activity android:name=".MainActivity" ...> </activity> <activity android:name=".SecondActivity" android:parentActivityName=".MainActivity" ...> </activity> </application>在 Activity 設定:
@Override protected void onCreate(Bundle savedInstanceState) {ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true);}
網路上的方法不需要添加:
@Override public boolean onOptionsItemSelected(MenuItem item) {經過測試,id 既不是 R.id.home,也不是 R.id.homeAsUp, 應該是透過 AndroidManifest.xml 綁定 parent id。switch (item.getItemId()) { case R.id.home: finish(); return true; }return super.onOptionsItemSelected(item); }
前面返回時,是重建 Intent 轉回去呼叫 MainActivity#onCreate(),所以資料會都丟掉。 避免這種情況可以複寫這個方法:
@Override public Intent getSupportParentActivityIntent() { finish(); return null; }
參考資料:
- Android API Guides: Navigating Up with the App Icon
- StackOverflow: How to prevent .setDisplayHomeAsUpEnabled from re-creating the parent activity?
Android Studio 1.3 compileSdkVersion 22 buildToolsVersion "23.0.0 rc3" com.android.support:appcompat-v7:22.2.+
沒有留言:
張貼留言