Wie kann ich onBackPressed()
von jedem Fragment auf HomeFragment gehen oder zum vorherigen fragment gehen.Programmgesteuert zum vorherigen Fragment zurückkehren
Hier ist der Code, um das Fragment standardmäßig zu setzen Home Fragment ist geöffnet, wenn die App startet, aber auf der Rückseite drücken App geschlossen. braucht es zu helfen, dank heraus zu lösen dies ist mein MainActivityDrawer Klasse
private Toolbar mToolbar;
private FragmentDrawer drawerFragment;
GpsTrackerAlarmReceiver alarm = new GpsTrackerAlarmReceiver();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_drawer);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
drawerFragment = (FragmentDrawer)
getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), mToolbar);
drawerFragment.setDrawerListener(this);
alarm.setAlarm(this);
// display the first navigation drawer view on app launch
displayView(0);
}
@Override
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) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_help) {
return true;
}
if(id == R.id.action_search){
Toast.makeText(getApplicationContext(), "Search action is selected!", Toast.LENGTH_SHORT).show();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onDrawerItemSelected(View view, int position) {
displayView(position);
}
private void displayView(int position) {
Fragment fragment = null;
String title = getString(R.string.app_name);
switch (position) {
case 0:
fragment = new HomeFragment();
title = getString(R.string.title_home);
break;
case 1:
fragment = new ProfileFragment();
title = getString(R.string.title_profile);
break;
case 2:
fragment = new ContactsFragment();
title = getString(R.string.title_contacts);
break;
case 3:
fragment = new GeoFencFragment();
title = getString(R.string.title_geofence);
break;
case 4:
fragment = new HistoryFragment();
title = getString(R.string.title_history);
break;
case 5:
fragment = new SettingFragment();
title = getString(R.string.title_settimg);
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container_body, fragment);
fragmentTransaction.commit();
// set the toolbar title
getSupportActionBar().setTitle(title);
}
}
@Override
public void onResume() {
Log.d(TAG, "onResume");
super.onResume();
}
@Override
protected void onStop() {
super.onStop();
}}
Sie Linie verpasst hinzufügen Fragment Transaktion in Backstack – Ramit
Dank erhalten Können Sie etwas mehr über Fragmenttransaktionen im Backstack erklären? –
Ich denke, Sie haben Zeile fragmentTransaction.addToBackStack (null); in deinem ursprünglichen Code. Bitte erläutern Sie Ihr Problem, was Sie erreichen möchten. Ex du hast ein Hausfragment und du kannst zu Fragment 5 Fragmenten von hier gehen und auf Zurück drücken du willst zurück nach Hause kommen und dann wieder zurück drücken drückst du aus. Dafür müssen Sie onBackPress nicht überschreiben. Es wird automatisch vom System verarbeitet, wenn Sie Transaktionen im Backstack hinzufügen. Bitte korrigieren Sie mich, wenn ich falsch liege. – Ramit