• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

Android

Android Actionbar回到上一级

原创内容,转载请注明原文网址: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自顶菜单