原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/Android/2019/0821/610.html
开始,常州游戏开发培训给Actionbar增加回笼图标:
代码:
复制代码
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
isSendMsg = (Switch) findViewById(R.id.isSendMessage);
isCall = (Switch) findViewById(R.id.isCall);
data = (initDataApp)getApplication();
isSendMsg.setChecked(data.isSendMsg());
isCall.setChecked(data.isCall());
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true); //actionBar.setListNavigationCallbacks(adapter, callback);
}
复制代码
配置可用
重写onOptionsItemSelected方法:
复制代码
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: //NavUtils.navigateUpFromSameTask(this);//onSaveInstanceState
// This is called when the Home (Up) button is pressed // in the Action Bar.
Intent parentActivityIntent = new Intent(this, MainActivity.class);
parentActivityIntent.addFlags(
Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(parentActivityIntent);
finish();
// onBackPressed();
return true;
} return super.onOptionsItemSelected(item);
}
复制代码
这个方法能够完成在挪用向上回笼时的处分。
接收:android.R.id.home
处分这个android.R.id.home有几种方式,先对其举行对比:
复制手机App外包代码
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);//onSaveInstanceState
return true;
} return super.onOptionsItemSelected(item);
}
复制代码
尝试回退的时分,到上一个Activity时出现丧失数据现象。(尝试方式,在A中加一个EditText,而后输入数据,点击跳入Bactivity ,此时应用向上一级导航会出现丧失数据)
复制代码
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home:
Intent parentActivityIntent = new Intent(this, MainActivity.class);
parentActivityIntent.addFlags(
Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(parentActivityIntent);
finish(); return true;
} return super.onOptionsItemSelected(item);
}
复制代码
应用intent方式一样,丧失数据。
后来我App开发培训看了看源码,发现点击手机的回退键时,触发onBackPressed();方法,这个方法是回笼时间轴上的上一个Activity,能够留存数据。
复制代码
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home:
onBackPressed(); return true;
} return super.onOptionsItemSelected(item);
}
复制代码
不过在尝试的时分发现,这个方法只返还上一,而不是逻辑指定的,例:A->B->C,从C回笼到A,要是应用onBackPressed(),则回到B,以是过失。到此我们只能应用NavUtils.navigateUpFromSameTask(this);//onSaveInstanceState,不过要及时留存数据。
上篇:上一篇:Android开发中服务Service的基本使用
下篇:下一篇:android自顶菜单