2015-04-21 116 views
0

我有一個活動導致我遇到問題。多次按下後退按鈕無法返回活動

問題是,當我輸入活動時,我不能回到前面的 活動,除非我正好按下後退按鈕5次。

該活動是通過列表輸入的,而此列表還有其他幾個具有相同問題的活動。請注意,並非所有人都有 相同的問題。

這是我的Java代碼:

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



    } 

} 

從案例3至7的情況下出現了問題。

它爲什麼這樣做?

+0

即使調用了'finish()'後,系統仍會繼續處理下一條語句,而在'switch case'結構中'break'語句必須避免其他情況繼續執行 –

回答

4

您需要的情況下,號碼3,4,5和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... 
1

使用打破你的問題是,你沒有違反的情況,因此該意圖它有很多煩惱的還有:

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 
0

您需要在每種情況後包含一個break語句。基本上如果3是真的,它會執行3到7. break語句阻止它在循環中執行代碼。 case聲明只是告訴它從何處開始執行代碼

相關問題