简体   繁体   中英

Back button is closing application instead of getting back to parent Activity

I'm new at Android developement.

While pressing Back button, the user should be redirected to the HomeActivity but while pressing Back button, the application is being closed.

What is being missed in my code?

I have posted my main activity below:

 package com.iridh.collegeapp; import android.content.Intent; import android.content.res.Configuration; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.view.menu.ExpandedMenuView; import android.view.MenuItem; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.Button; public class HomeActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { DrawerLayout navDrawer; private ActionBarDrawerToggle navToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); navDrawer= (DrawerLayout)findViewById(R.id.navDrawer); navToggle=new ActionBarDrawerToggle(this,navDrawer,toolbar,R.string.open,R.string.close); navDrawer.addDrawerListener(navToggle); Button btn1=(Button)findViewById(R.id.btn_more); Button btn2=(Button)findViewById(R.id.btn_more2); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setContentView(R.layout.activity_detail); } }); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setContentView(R.layout.activity_detail); } }); navToggle.syncState(); getSupportActionBar().setDisplayHomeAsUpEnabled(true); toolbar.setNavigationOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { startActivity(new Intent(getApplicationContext(),HomeActivity.class)); finish(); } public void onConfigurationChanged(Configuration newConfig) { navToggle.onConfigurationChanged(newConfig); navToggle.onConfigurationChanged(newConfig); } }); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); } public boolean onOptionItemSelected(MenuItem item){ if (navToggle.onOptionsItemSelected(item)){ return true; } return super.onOptionsItemSelected(item); } @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { case R.id.menu_home: { break; } case R.id.menu_governance: { setContentView(R.layout.activity_detail); } case R.id.menu_campus: { setContentView(R.layout.activity_campus); break; } case R.id.menu_department: { setContentView(R.layout.activity_departments); break; } case R.id.menu_admission: { setContentView(R.layout.activity_admission); break; } case R.id.menu_facilities: { setContentView(R.layout.activity_facilities); break; } case R.id.menu_gallery: { setContentView(R.layout.activity_gallery); break; } case R.id.menu_downloads: { setContentView(R.layout.activity_downloads); break; } case R.id.menu_placements: { setContentView(R.layout.activity_placements); break; } case R.id.menu_contact: { setContentView(R.layout.activity_contact); break; } } navDrawer.closeDrawer(GravityCompat.START); return true; } };

This is second activity

 package com.iridh.collegeapp; import android.content.Context; import android.content.Intent; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v4.app.NavUtils; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ImageButton; import android.widget.Toast; public class DetailActivity extends HomeActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); Button b3 = findViewById(R.id.btn_back); b3.setOnClickListener((View.OnClickListener) this); } public void onClick(View v) { finish(); //this button i created to get back back doesnt work } public void onBackPressed() { setContentView(R.layout.activity_home); } }

I also tried using intent, but doesn't worked at all. I just want to go back to HomeActivity from DetailActivity, please help me.

Thanks in advance

It is normal, because you call finish() in the first activity so it is destroyed (calling onPause() , onStop() and onDestroy() in this order) and it will no longer be on the stack.

So if you remove the finish() in the first activity, you can return back to it.

EDIT: also as @ADM said in the comment, you have to proceed like below to start DetailActivity :

startActivity(new Intent(HomeActivity.this,DetailActivity.class)); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM