web-dev-qa-db-fra.com

Utilisation de Intent dans une application Android pour afficher une autre activité

Dans mon application Android, j'ai deux classes d'activité. J'ai un bouton sur le premier et je veux montrer le second quand il est cliqué, mais j'obtiens une erreur. Voici les cours:

public class FirstActivity extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button orderButton = (Button)findViewById(R.id.order);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        Intent intent = new Intent(FirstActivity.this, OrderScreen.class);
        startActivity(intent);
      }

    });
  }
}

La deuxième classe qui doit apparaître lorsque l'utilisateur clique sur le bouton, mais ne le fait jamais:

public class OrderScreen extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.order);

    Button orderButton = (Button) findViewById(R.id.end);

    orderButton.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View view) {
        finish();
      }

    });
  }
}

Comment créer un bouton qui affichera la deuxième activité?

194
Tai Squared

Le problème était le OrderScreen Activity n'a pas été ajouté à AndroidManifest.xml . Une fois que j’ai ajouté cela en tant que nœud d’application, cela fonctionnait correctement.

<activity Android:name=".OrderScreen" />
176
Tai Squared

Ajoutez cette ligne à votre AndroidManifest.xml:

<activity Android:name=".OrderScreen" /> 
161
user106011

----FirstActivity.Java -----

    package com.mindscripts.eid;
    import Android.app.Activity;
    import Android.content.Intent;
    import Android.os.Bundle;
    import Android.view.View;
    import Android.view.View.OnClickListener;
    import Android.widget.Button;

public class FirstActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button orderButton = (Button) findViewById(R.id.order);
    orderButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(FirstActivity.this,OrderScreen.class);
            startActivity(intent);
        }
    });

 }
}

---OrderScreen.Java ---

    package com.mindscripts.eid;

    import Android.app.Activity;
    import Android.os.Bundle;
    import Android.view.View;
    import Android.view.View.OnClickListener;
    import Android.widget.Button;



    public class OrderScreen extends Activity {
@Override



protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.second_class);
    Button orderButton = (Button) findViewById(R.id.end);
    orderButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            finish();
        }
    });

 }
}

---AndroidManifest.xml ----

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
  package="com.mindscripts.eid"
  Android:versionCode="1"
  Android:versionName="1.0">


<application Android:icon="@drawable/icon" Android:label="@string/app_name">
    <activity Android:name=".FirstActivity"
              Android:label="@string/app_name">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />
            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity Android:name=".OrderScreen"></activity>
</application>
16
Sunil Chavan

Utilisez ce code:

Intent intent=new Intent(context,SecondActivty.class);
startActivity(intent);
finish();

contexte: fait référence au contexte actuel de l'activité,

veuillez vous assurer que vous avez ajouté une activité dans le fichier manifeste Android.

Code suivant pour l'ajout d'activité dans le fichier manifeste Android

<Activity name=".SecondActivity">
</Activity>
4
Mahesh
<activity Android:name="[packagename optional].ActivityClassName"></activity>

Il suffit d’ajouter l’activité à laquelle on souhaite basculer dans le fichier manifeste.

4
java dev
b1 = (Button) findViewById(R.id.click_me);
        b1.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                Intent i = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(i);

            }
        });
3
Hiren Patel

Lorsque vous créez une activité dans le fichier Android, vous devez la spécifier dans AndroidManifest.xml, comme

<uses-sdk Android:minSdkVersion="8" />

<application
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name" >
    <activity
        Android:name=".MyCreativityActivity"
        Android:label="@string/app_name" >
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


     <activity Android:name=".OrderScreen"></activity>


</application>
3

Dans le manifeste

<activity Android:name=".OrderScreen" />

Dans le code Java où vous devez placer le code d'intention

startActivity(new Intent(CurrentActivity.this, OrderScreen.class);
2
Nilesh Panchal

ajouter l'activité dans votre fichier manifeste

<activity Android:name=".OrderScreen" />
2
Neal Ahluvalia

vous pouvez utiliser le contexte de la vue qui a appelé. Exemple:

Button orderButton = (Button)findViewById(R.id.order);

orderButton.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View view) {
    Intent intent = new Intent(/*FirstActivity.this*/ view.getContext(), OrderScreen.class);
    startActivity(intent);
  }

});
1
Bruno
Intent i = new Intent("com.Android.SubActivity");
startActivity(i);
1
Ndupza