Страницы

Поиск по вопросам

понедельник, 3 июня 2019 г.

Как отключить отображение кнопки назад (DisplayHomeAsUpEnabled) в главном активити?

Есть активити и фрагмент в фрагменте стоит DisplayHomeAsUpEnabled. При переходе с активити в фрагмент кнопка назад появляется все хорошо, но при нажатии и перехода назад в активити стрелочка остается отображаеться? Как убрать?
Пробывал не помогло:
getSupportActionBar().setHomeButtonEnabled(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setHomeAsUpIndicator(null);
Код кнопки в фрагменте DisplayHomeAsUpEnabled
@Override public void onResume() { super.onResume(); ((ActionBarActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true); }
Код активити:
public class MainActivity extends ActionBarActivity implements ExpandableListView.OnChildClickListener, View.OnClickListener { private static FragmentManager mManager; Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar);
button1 = (Button) findViewById(R.id.button1); mManager = getSupportFragmentManager();
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
/* FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } });*/
// button1.setOnClickListener(this); button1.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) { Fragment fragment = null;
mManager.findFragmentById(R.id.fragmentContainer); if (fragment == null) { fragment = new sovety_Fragment(); mManager.beginTransaction() .add(R.id.fragmentContainer, fragment) .replace(R.id.fragmentContainer, fragment) .addToBackStack(null) .commit(); }
}
}); }

public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; }
@Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId();
//noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } if (id == android.R.id.home) { onBackPressed(); return true; }
return super.onOptionsItemSelected(item); }
@Override public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
return false; }
@Override public void onClick(View v) {
} }


Ответ

Вы вызываете код, убирающий стрелку до того, как её показываете.
Т.к. вы убираете фрагмент нажатием кнопки "назад" именно в слушателе её нажатия надо убирать стрелку.
Засим попробуйте добавить обработчик нажатия кнопки назад в активити и именно в нём убрать стрелку:
@Override onBackPressed() { getSupportActionBar().setDisplayHomeAsUpEnabled(false); super.onBackPressed(); }

Комментариев нет:

Отправить комментарий