Reputation: 19
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
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
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
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