Je souhaite passer d'une activité à une autre (à l'aide d'un périphérique virtuel). Lorsque je clique sur le bouton pour me déplacer, mon émulateur affiche une boîte de dialogue affichant unfortunately SMS1 has stopped working
(SMS1 est le nom de mon application).
Quelqu'un peut-il m'aider à corriger mon code?
MainActivity.Java:
package com.example.sms1;
import Android.os.Bundle;
import Android.app.Activity;
import Android.content.Intent;
import Android.view.Menu;
import Android.view.View;
import Android.view.View.OnClickListener;
import Android.widget.Button;
import Android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener
{
Button b1;
TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById(R.id.button1);
tv1 = (TextView) findViewById(R.id.textView1);
b1.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
Intent i = new Intent(getApplicationContext(),NextActivity.class);
startActivity(i);
setContentView(R.layout.avtivity_next);
}
}
Voici la NextActivity
package com.example.sms1;
import Android.os.Bundle;
import Android.app.Activity;
import Android.view.Menu;
import Android.widget.TextView;
public class NextActivity extends Activity {
TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.avtivity_next);
tv1 = (TextView) findViewById(R.id.textView1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Manifest.XML
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.sms1"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="8"
Android:targetSdkVersion="17" />
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="com.example.sms1.MainActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
NextActivityLayout
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".NextActivity" >
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="next activity" />
</RelativeLayout>
MainActivity Layout
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
Android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/hello_world" />
<Button
Android:id="@+id/button1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_below="@+id/textView1"
Android:layout_marginTop="80dp"
Android:layout_toRightOf="@+id/textView1"
Android:text="Button" />
</RelativeLayout>
Vous n'avez pas défini NextActivity
dans le fichier AndroidManifest.xml
.
Ajoutez ces lignes dans le manifeste Android après la balise</activity>
. Ça devrait marcher.
<activity
Android:name=".NextActivity" >
</activity>
le code final sera
<application
Android:allowBackup="true"
Android:icon="@drawable/app_icon"
Android:label="@string/app_name" >
<activity
Android:name=".MainActivity"
Android:label="Main Activity" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
Android:name=".NextActivity" >
</activity>
</application>
First Vous devez utiliser ce code dans MainActivity.Java class
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
Intent i = new Intent(getApplicationContext(),NextActivity.class);
startActivity(i);
}
Vous pouvez transmettre l'intention de cette façon.
Seconde
ajoutez l'entrée appropriée dans le fichier manifest.xml
.
<activity Android:name=".NextActivity" />
Maintenant, vois ce qui se passe.
Ajoutez simplement votre NextActivity
dans le fichier Manifest.XML
<activity
Android:name="com.example.sms1.NextActivity">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
</intent-filter>
</activity>
bouton1 dans activité2
code écrit dans l'activité 2
button1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
// starting background task to update product
Intent fp=new Intent(getApplicationContext(),activity1.class);
startActivity(fp);
}
});
Cela pourrait aider
1) placez setContentView(R.layout.avtivity_next);
dans la méthode onCreate () de l'activité suivante, tout comme onCreate () de cette activité (principale)
2) si vous n'avez pas défini l'activité suivante dans le fichier manifeste de vos applications, procédez comme suit:
<application
Android:allowBackup="true"
Android:icon="@drawable/app_icon"
Android:label="@string/app_name" >
<activity
Android:name=".MainActivity"
Android:label="Main Activity" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
Android:name=".NextActivity"
Android:label="Next Activity" >
</activity>
</application>
Vous devez avoir à effectuer la 2ème étape chaque fois que vous créez une nouvelle activité, sinon votre application se bloquera.
Lorsque vous devez passer d'une page à une autre dans Android, les modifications sont effectuées en 2 fichiers.
Intent intentSignUP = new Intent(this,SignUpActivity.class);
startActivity(intentSignUP);
ajouter une activité dans le fichier androidManifest aussi comme
<activity Android:name=".SignUpActivity"></activity>
Le code ci-dessous fonctionne correctement avec Android 4.3:
Intent i = new Intent(this,MainActivity2.class);
startActivity(i);
Cela est principalement dû à une activité non enregistrée dans le fichier manifeste comme "NextActivity".
<activity Android:name=".NextActivity">
puis utilisez le code à l'endroit où vous voulez
Intent intent=new Intent(MainActivity.this,NextActivity.class);
startActivity(intent);
où vous devez appeler le NextActivity ..
Enregistrez votre classe Java sur le fichier manifeste Android
Après cela, écrivez ce code en cliquant sur le bouton
startActivity(new intent(MainActivity.this,NextActivity.class));
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
Intent intent = new Intent(Activity1.this,Activity2.class);
startActivity(intent);
}
Vous devez d'abord déclarer l'activité dans Manifest. C'est important. Vous pouvez ajouter cette application interne comme ceci.
public void onClick(View v)
{
startActivity(new Intent(getApplicationContext(), Next.class));
}
c'est un moyen direct de passer à la deuxième activité et il n'y a pas besoin d'intention d'appel
setContentView (R.layout.avtivity_next);
Je pense que cette ligne de code devrait être déplacée à la prochaine activité ...