先在 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) {
switch (item.getItemId()) {
case R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
經過測試,id 既不是 R.id.home,也不是 R.id.homeAsUp,
應該是透過 AndroidManifest.xml 綁定 parent id。
前面返回時,是重建 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.+
沒有留言:
張貼留言