user3136591
user3136591

Reputation: 19

Activity can't go back without pressing the back button multiple times

I have an activity who is causing me a problem.

The problem is that when I enter the activity, I cant go back to the previous activity, unless i press the back button exactly 5 times.

The activity is entered through a list, and this list has several other activities which have the same problem. Note that not all of them has the same problem.

Here is my Java Code:

package com.exple.v1;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class MoviesMaingenreActivity extends ActionBarActivity {

    LayoutInflater inflater;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        populateListView();
        registerClickCallback();

    }
    private void registerClickCallback() {

        ListView list = (ListView)findViewById(R.id.listView1);

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                Intent intent;
                switch(position)
                {

                case 1:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieActionGenreActivity.class);
                    startActivity(intent);
                    break;
                case 2:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieAnimationGenreActivity.class);
                    startActivity(intent);
                    break;
                case 3:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieComedyGenreActivity.class);
                    startActivity(intent);
                    finish();
                case 4:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieDocumentaryGenreActivity.class);
                    startActivity(intent);
                case 5:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieHorrorGenreActivity.class);
                    startActivity(intent);
                case 6:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieDramaGenreActivity.class);
                    startActivity(intent);
                case 7:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieScifiGenreActivity.class);
                    startActivity(intent);
                    break;
                default:
                    break;
                }
            }
        });

    }

    private void populateListView() {



        String[] textz = {"Action","Animation","Komedi","Dokumentär","Skräck","Drama","Sci-fi"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.the_list, textz);
        ListView listView = (ListView)findViewById(R.id.listView1);
        listView.setAdapter(adapter);

        inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View header = inflater.inflate(R.layout.header_movies_maingenres,null);
        listView.addHeaderView(header,null,false);



    }

}

From case 3 to case 7 does the problem occur.

Why does it do this?

Upvotes: 0

Views: 465

Answers (3)

netsplit
netsplit

Reputation: 1130

You need to include a break statement after each case. Basically if 3 is true, it executes 3 through 7. The break statement stops it from executing code in the loop. The case statements just tell it where to start executing code

Upvotes: 0

Alejandro Cumpa
Alejandro Cumpa

Reputation: 2353

Your problem is that you are not breaking the case, so the Intent it's having a lot of troubles there:

case 3:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieComedyGenreActivity.class);
                    startActivity(intent);
                    finish(); 
 //break; missing
                case 4:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieDocumentaryGenreActivity.class);
                    startActivity(intent);
//break; missing

                case 5:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieHorrorGenreActivity.class);
                    startActivity(intent);
//break; missing
                case 6:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieDramaGenreActivity.class);
                    startActivity(intent);
//break; missing

Upvotes: 1

A.R.
A.R.

Reputation: 2641

You need to use break in case number 3,4,5 and 6

                case 3:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieComedyGenreActivity.class);
                    startActivity(intent);
                    finish();
                    break; // this is what is missing here...
                case 4:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieDocumentaryGenreActivity.class);
                    startActivity(intent);
                    break; // this is what is missing here...
                case 5:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieHorrorGenreActivity.class);
                    startActivity(intent);
                    break; // this is what is missing here...
                case 6:
                    intent = new Intent(MoviesMaingenreActivity.this,MovieDramaGenreActivity.class);
                    startActivity(intent);
                    break; // this is what is missing here...

Upvotes: 4

Related Questions