web-dev-qa-db-fra.com

Android: Comment allez-vous à une autre activité en cliquant?

J'essaie de passer à la troisième activité d'une séquence. Passer de l'activité principale à la seconde fonctionne très bien, mais lorsque j'essaie de passer à la troisième activité de la seconde, l'application se bloque.

Voici mon code pour la deuxième activité:

package com.example.helloandroid;

import Android.app.Activity;
//other imports here

public class Game extends Activity implements OnClickListener {

    private static final String TAG = "Matrix";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.matrix);
        View doneButton = findViewById(R.id.done_button);
        doneButton.setOnClickListener(this);
    }

    public void onClick(View v) { 
        switch (v.getId()) { 
            case R.id.done_button:
                Intent k = new Intent(this, GameTwo.class);
                startActivity(k);
                //finish();
                break;
        }
    }
}

Et le code de la troisième activité:

package com.example.helloandroid;

import Android.app.Activity;
//other imports here

public class GameTwo extends Activity {

   private static final String TAG = "Matrix";

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       this.setContentView(R.layout.matrixtwo);
       View donetwoButton = findViewById(R.id.donetwo_button);
   }
}
18
Biggsy

Essayez le code suivant dans le switch:

try {
    Intent k = new Intent(Game.this, GameTwo.class);
    startActivity(k);
} catch(Exception e) {
    e.printStackTrace();
}

Dites-moi est-ce utile .....

24
Sumant
Intent k = new Intent(Game.this, GameTwo.class);
startActivity(k);

Cela fonctionne, mais vous devez également vous assurer de le spécifier dans votre manifeste.

9
Noman

Assurez-vous d'avoir les trois activités déclarées dans le manifeste. Est une erreur courante pour créer l'activité et ne pas la déclarer.

Appelez la nouvelle activité en utilisant:

Intent k = new Intent(Game.this, GameTwo.class);
startActivity(k);
3
EhTd

Essaye ça

Intent intent = new Intent(getApplicationContext(), GameTwo.class);
startActivity(intent);
3
Joe

C'est un long plan mais ...
Votre problème peut également être dû à une exception NullPointerException
qui est levé si donetwo_button n'est pas déclaré dans matrixtwo.xml...
(Les erreurs de copier-coller sont assez courantes)