web-dev-qa-db-fra.com

Passer d'une activité à une autre Activité sous Android

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>
8
Jyotika Pandey

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>
9
rachit

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.

17
Harshid

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>
3
Jibяaᴎ Khaᴎ

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

3
patel sagar

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.

1
Husnain Iqbal

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>
1
Ashu

Le code ci-dessous fonctionne correctement avec Android 4.3:

Intent i = new Intent(this,MainActivity2.class);
startActivity(i);
0
Debashis Nandi

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 ..

0
Nilesh Panchal

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));
0
Ranjith Alappadan
@Override
public void onClick(View v)
{
    // TODO Auto-generated method stub
    Intent intent = new Intent(Activity1.this,Activity2.class);
    startActivity(intent);

}
0
Sweta Chandarana

Vous devez d'abord déclarer l'activité dans Manifest. C'est important. Vous pouvez ajouter cette application interne comme ceci.

0
Farruh Habibullaev
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

0
kishore

setContentView (R.layout.avtivity_next);

Je pense que cette ligne de code devrait être déplacée à la prochaine activité ...

0
SoulMagnet