Панель действий Кнопка «Назад» не работает

с помощью этих Android-документов. Я пытаюсь сделать панель действий. Кнопка «Назад». Я получаю кнопку «Назад», как показано ниже:

введите описание изображения здесь

Вывод:

Но моя проблема. После просмотра изображений в галерее я нажимаю кнопку action bar back button .

Тогда it is not working Но он должен go back to previous page .

Ниже перечислены кодировки.

GalleryActivity.java:

  import android.app.ActionBar; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.NavUtils; import android.view.MenuItem; import com.fth.android.R; public class GalleryActivity extends FragmentActivity { private int position; private static String id; private static String name; private DemoCollectionPagerAdapter mDemoCollectionPagerAdapter; private ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gallery); position = getIntent().getExtras().getInt("position"); id = getIntent().getExtras().getString("id"); name = getIntent().getExtras().getString("name"); mDemoCollectionPagerAdapter = new DemoCollectionPagerAdapter(getSupportFragmentManager()); // Set up action bar. final ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); // getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME|ActionBar.DISPLAY_USE_LOGO|ActionBar.DISPLAY_HOME_AS_UP); // Set up the ViewPager, attaching the adapter. mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mDemoCollectionPagerAdapter); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Intent upIntent = new Intent(this, HomeActivity.class); upIntent.putExtra("position", position); if (NavUtils.shouldUpRecreateTask(this, upIntent)) { TaskStackBuilder.from(this) .addNextIntent(upIntent) .startActivities(); finish(); } else { NavUtils.navigateUpTo(this, upIntent); } return true; } return super.onOptionsItemSelected(item); } } 

GalleryDetailFragment.java:

 import com.sit.fth.model.GalleryDetail; import com.sit.fth.util.APIServiceHandler; import com.sit.fth.util.AppConstants; import com.sit.fth.util.AppPromoPager; public class GalleryDetailFragment extends BaseFragment implements PromoPagerListener { private TextView countView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { this.setHasOptionsMenu(true); id = getArguments().getString("id"); name = getArguments().getString("name"); View view = inflater.inflate(R.layout.app_pager, null); return view; } } 

Любой может помочь мне, если вы знаете, как их решить. Спасибо.

Я решил эту проблему, добавив ниже кодировку в GalleryActivity .

 ActionBar actionBar; actionBar=getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; } return super.onOptionsItemSelected(item); } 

В MainActivity :

Ранее,

Открытый class HomeActivity расширяет BaseActivity

Затем я перехожу в

Открытый class HomeActivity расширяет FragmentActivity

В GalleryFragment:

Я использую Intent чтобы передать его в GalleryActivity .

 @Override public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { Gallery gallery = (Gallery) arg0.getAdapter().getItem(arg2); Intent intent = new Intent(getActivity(), GalleryActivity.class); intent.putExtra("position", position); intent.putExtra("id", gallery.getGalId()); intent.putExtra("name", gallery.getAlbumTitle()); startActivity(intent); // mCallback.OnGalItemSelected(gallery.getGalId(),gallery.getAlbumTitle()); } 

Пожалуйста, прочтите это

вы должны иметь что-то вроде этого:

       

то вызов NavUtils.navigateUpFromSameTask (this) приведет к переходу к родительской активности (HomeActivity).

Попробуйте

Прежде всего вам нужно использовать addToBackStack() перед commit() для fragmentов

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up/Home button case android.R.id.home: if(getSupportFragmentManager().getBackStackEntryCount()>0) getSupportFragmentManager().popBackStack(); return true; } return super.onOptionsItemSelected(item); } 

Ни один из ответов, представленных здесь, не работал для меня. Мне пришлось включить switch внутри метода onMenuItemSelected . Я знаю, что это не то, что указано в документации для Android, но все же это сработало, поэтому я просто подумал, что оставлю это здесь для людей, которые сталкиваются с той же проблемой. Однако моя проблема связана с Управлением, а не с Fragment , но это должно быть почти то же самое.

 class FooActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... getActionBar().setHomeButtonEnabled(true); getActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return false; } } 

Для меня мне пришлось установить mDrawerToggle.setToolbarNavigationClickListener(...) слушателю, который запускает обратное действие. В противном случае он ничего не делает. Вот как выглядит исходный код ActionBarDrawerToggle :

 toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mDrawerIndicatorEnabled) { toggle(); } else if (mToolbarNavigationClickListener != null) { mToolbarNavigationClickListener.onClick(v); } } }); 

Таким образом, поведение по умолчанию на самом деле является вызовом нашего слушателя, а не магия сама по себе.

OnCreate

 { ... Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); resetActionBar(); ... } public void resetActionBar() { getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); } @Override public void onBackPressed() { FragmentManager fm = getSupportFragmentManager(); int count = fm.getBackStackEntryCount(); if(count == 0) { // Do you want to close app? showDialog(); }else{ super.onBackPressed(); } } @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(); Log.i("coming", "comming"); //noinspection SimplifiableIfStatement if(id==android.R.id.home){ if (getSupportFragmentManager().getBackStackEntryCount() > 0) onBackPressed(); else drawerLayout.openDrawer(navigationView); return true; } return super.onOptionsItemSelected(item); } 

Вот еще одна вещь, которую нужно проверить, если другие ответы здесь (или здесь или здесь или здесь ) не работают.

Я скопировал код из другого действия, которое отключило меню. Удаление этого метода (и применение решений, указанных в других ответах) позволило кнопке «вверх» работать.

 @Override public boolean onCreateOptionsMenu(Menu menu) { // hide the menu return false; } 

Вы просто должны добавить следующую строку в действие в manifest.xml. Родительская активность – это активность, к которой вы хотите вернуться.

  android:parentActivityName=".activities.MainActivity" 

Используйте метод SupportNavigateUp() и вызовите onBackPressed в этом методе.

В моем случае я переопределил метод onCreateOptionsMenu, и я забыл назвать супер в конце.

  • Эта активность уже имеет панель действий, предоставляемую декором windows
  • Изменение вкладок ActionBar подчеркивает цвет программно
  • Цвет текста пункта меню «Действие»
  • ActionBar MenuItem Divider
  • Как resize текста заголовка в панели действий?
  • Как удалить текст заголовка из Android ActionBar?
  • Не показано приложение с AppCompat
  • Невозможно выполнить поиск в панели действий.
  • getActionBar возвращает null
  • Как добавить элемент раскрывающегося списка в панели действий
  • Как изменить цвет фона ActionBar ActionBarActivity с помощью XML?
  • Давайте будем гением компьютера.