Кнопки Android открывают неправильные действия - PullRequest
0 голосов
/ 12 мая 2011

У меня есть три кнопки на моей главной странице.Что-то странное происходит, когда я пытаюсь нажать на них.Например, когда я нажимаю кнопку NewGame, она сначала отображает то, что должна отображать кнопка счета, а затем, если я нажимаю кнопку «Назад», она переходит к отображению действия, для которого она предназначена.С помощью кнопки «О» мне нужно дважды щелкнуть назад (отображается активность newGame и оценка). Есть ли причина, по которой это происходит?

public class Sakurame extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);

    //set up click listeners for buttons
    View HighScoreButton = findViewById(R.id.highscore_button);
    HighScoreButton.setOnClickListener(this);
    View newButton = findViewById(R.id.new_button);
    newButton.setOnClickListener(this);
    View aboutButton = findViewById(R.id.about_button);
    aboutButton.setOnClickListener(this);

}

@Override
public boolean onCreateOptionsMenu(Menu menu){
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()){
    case R.id.settings:
        startActivity(new Intent(this, Prefs.class));
        return true;
        // More items go here (if any)
    }
    return false;
}

public void onClick(View v){
    switch(v.getId()){
    case R.id.about_button:
        Intent i = new Intent(this, About.class);
        startActivity(i);
    case R.id.new_button:
        Intent i2 = new Intent(this, HighScore.class);
        startActivity(i2);
    case R.id.highscore_button:
        Intent i3 = new Intent(this, DisplayScores.class);
        startActivity(i3);
        //break;

        // more buttons go here (if any)
    }
}

1 Ответ

3 голосов
/ 12 мая 2011

Попробуйте добавить break; после каждого startActivity в методе onClick.

Изменить, чтобы уточнить. Это гарантирует, что после того, как дело выполнено, оператор switch прерывается вместо перехода к следующему оператору дела.

    case R.id.about_button:
        Intent i = new Intent(this, About.class);
        startActivity(i);
        break;
    case R.id.new_button:
        Intent i2 = new Intent(this, HighScore.class);
        startActivity(i2);
        break;
    case R.id.highscore_button:
        Intent i3 = new Intent(this, DisplayScores.class);
        startActivity(i3);
        break;
...