En utilisant intention dans une application Android pour afficher une autre activité
-
09-09-2019 - |
Question
Dans mon application Android, j'ai deux classes d'activité. J'ai un bouton sur le premier et je veux montrer la seconde quand il est cliqué, mais je reçois une erreur. Voici les classes:
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 seconde classe qui doit apparaître lorsque le bouton est cliqué, mais jamais fait:
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 puis-je créer un bouton qui montrera la deuxième activité?
La solution
La question a été le OrderScreen Activity
n'a pas été ajouté à la balise AndroidManifest.xml . Une fois que j'ajouté que comme un nœud d'application, il a fonctionné correctement.
<activity android:name=".OrderScreen" />
Autres conseils
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: se référer au contexte de l'activité en cours,
S'il vous plaît assurez-vous que vous avez une activité ajoutée dans le fichier manifeste Android.
code suivant pour ajouter une activité dans le fichier manifeste Android
<Activity name=".SecondActivity">
</Activity>
<activity android:name="[packagename optional].ActivityClassName"></activity>
Il suffit d'ajouter l'activité que nous voulons passer à doit être placé dans le fichier manifeste
Lorsque vous créez une activité dans le fichier Android, vous devez indiquer 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>
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);
}
});
ajouter l'activité dans votre fichier manifest
<activity android:name=".OrderScreen" />
Dans le Manifest
<activity android:name=".OrderScreen" />
Dans le code Java où vous devez placer le code intention
startActivity(new Intent(CurrentActivity.this, OrderScreen.class);
vous pouvez utiliser le contexte de la vue qui a fait l'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);