-2

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

Dixon Chaudhary
  • 321
  • 1
  • 7
  • 21
  • Your code seems messed up. Why is `DetailActivity extends HomeActivity` And i do not see any second Activity calling in your app . – ADM May 15 '18 at 13:05
  • How did you get to the second activity? – AbhayBohra May 15 '18 at 13:26
  • @AbhayBohra by using setContentView(R.layout.activity_detail); now its fine i was wrong there , now im using startActivity(new Intent(HomeActivity.this,DetailActivity.class)); – Chetan Upare May 15 '18 at 20:41
  • @ADM there was my mistake of calling activity by setContentView(R.layout.activity_detail); – Chetan Upare May 15 '18 at 20:43

1 Answers1

0

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)); 
E.Abdel
  • 1,992
  • 1
  • 13
  • 24
  • i tried removing finish(); and changing setContentView(R.layout.activity_detail) to startActivity(new Intent(HomeActivity.this,DetailActivity.class)); but not working application getting close on calling startActivity – Chetan Upare May 15 '18 at 13:19
  • You don't have to change `setContentView`, you have to change the code in `toolbar.setNavigationOnClickListener` and remove finish(); below it – E.Abdel May 15 '18 at 13:22
  • Better use `Fragment` to manage every view in a separately class. Now, if you will try to access views for each layout, it can simply make crash. – grabarz121 May 15 '18 at 13:31
  • Thanks ! it works There was another issue with toolbar! – Chetan Upare May 15 '18 at 13:38