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é?
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" />
Ajoutez cette ligne à votre AndroidManifest.xml:
<activity Android:name=".OrderScreen" />
----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>
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>
<activity Android:name="[packagename optional].ActivityClassName"></activity>
Il suffit d’ajouter l’activité à laquelle on souhaite basculer dans le fichier manifeste.
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);
}
});
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>
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);
ajouter l'activité dans votre fichier manifeste
<activity Android:name=".OrderScreen" />
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);
}
});
Intent i = new Intent("com.Android.SubActivity");
startActivity(i);