Кнопка «Назад» закрывает приложение, а не возвращает его в родительское действие. - PullRequest
0 голосов
/ 15 мая 2018

Я новичок в разработке Android.

При нажатии кнопки «Назад» пользователь должен быть перенаправлен на HomeActivity, но при нажатии кнопки «Назад» приложение закрывается.

Что пропущено в моем коде?

Я разместил свою основную деятельность ниже:

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;
    }


};

Это второе занятие

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);
    }


}

Я также пытался использовать намерение, но не работает вообще.Я просто хочу вернуться в HomeActivity из DetailActivity, пожалуйста, помогите мне.

Заранее спасибо

1 Ответ

0 голосов
/ 15 мая 2018

Это нормально, потому что вы вызываете finish() в первом действии, поэтому он уничтожается (вызывая onPause(), onStop() и onDestroy() в этом порядке), и он больше не будет в стеке.

Таким образом, если вы удалите finish () в первом упражнении, вы можете вернуться к нему.

EDIT: также, как @ADM сказал в комментарии, вы должныдействуйте как ниже, чтобы начать DetailActivity:

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