2013-10-13 27 views
0

我創建這個代碼的菜單:Android的意圖開錯類

public class MainActivity extends ListActivity { 

String classes[] = {"Add a fight to the card", "Add a fighter", "Edit a fighter"}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    setListAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, classes)); 

} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    switch (position){ 
     case 0: 
       Intent intent = new Intent(MainActivity.this, AddFight.class); 
       startActivity(intent); 
     case 1: 
       Intent intent2 = new Intent(MainActivity.this, AddFighter.class); 
       startActivity(intent2); 
      } 
    } 

當我點擊我的列表中case 0:,在case 1:意圖被打開,而不是case 0:。我該如何解決?

回答

4

您需要在您的交換機案例中插入break語句,否則,如您所寫,您的代碼將執行case 0,然後立即執行case 1

switch (position) 
{ 
    case 0: 
     Intent intent = new Intent(MainActivity.this, AddFight.class); 
     startActivity(intent); 
     break; 

    case 1: 
     Intent intent2 = new Intent(MainActivity.this, AddFighter.class); 
     startActivity(intent2); 
     break; 
} 

注:嚴格來說,你不需要在case 1break。但是,這是一個很好的做法。此外,如果您稍後再添加其他case聲明,這將防止「過期」。

+0

我知道這是愚蠢的容易。 –

1

您的代碼將會重新啓動活動。爲case語句插入中斷然後它將工作。最後一種情況下的聲明不需要中斷聲明。

switch (position){ 
     case 0: 
       Intent intent = new Intent(MainActivity.this, AddFight.class); 
       startActivity(intent); 
       break; 
     case 1: 
       Intent intent2 = new Intent(MainActivity.this, AddFighter.class); 
       startActivity(intent2); 
      } 
    }