2014-07-02 7 views
0

Je voudrais ouvrir une nouvelle activité à partir d'un bouton d'image dans Android. J'ai essayé avec ce code, mais ne fonctionne pas.Android image bouton ouvrir une nouvelle activité

main.class

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.content.Context; 
import android.view.View; 
import android.widget.ImageButton; 


public class main extends Activity { 

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

public void openMenu() { 

    final Context context = this; 

    ImageButton imgbtn = (ImageButton) findViewById(R.id.menu_button); 

    imgbtn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      Intent menu = new Intent(context, menu.class); 
      startActivity(menu); 

     } 

    }); 
} 

} 

menu.class

public class menu extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.menu); 
} 

l'erreur: android.content.ActivityNotFoundException: Impossible de trouver la classe explicite d'activité {dev.com.test/dev.com .test.menu}; avez-vous déclaré cette activité dans votre AndroidManifest.xml? Ma réponse: oui

<application 
    android:allowBackup="true" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".main" 
     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> 

Répondre

0

Assurez-vous que votre AndroidManifest ressemble à ceci

<application 
     android:allowBackup="true" 
     android:icon="@drawable/icon" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
    <activity 
    android:name=".main" 
    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=".menu">  // you need to add these 3 lines inside application tag. 
    </activity> 

</application> 

L'erreur android.content.ActivityNotFoundException: Unable to find explicit activity class {dev.com.test/dev.com.test.menu}; have you declared this activity in your AndroidManifest.xml? est très bien droit au but. Chaque fois que vous créez une nouvelle activité, assurez-vous que cette activité est enregistrée au AndroidManifest.xml à l'intérieur de la balise application.

0

Non, vous n'avez pas inclus dans votre manifeste. Ce que vous avez inclus est l'activité principale. Mais vous devez inclure chaque activité, y compris celle que vous essayez de créer. Voici un exemple (vous aurez probablement besoin de changer le nom du package):

<application 
android:allowBackup="true" 
android:icon="@drawable/icon" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" > 
    <activity 
    android:name=".main" 
    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="com.test.menu" 
    android:label="My second activity" 
    android:parentActivityName="com.test.main" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.test.main" /> 
    </activity> 

</application> 
0
ImageButton mainButton = (ImageButton) findViewById(R.id.imageButton); 
     mainButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

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

      } 
     }); 
+0

Peut-être pourriez-vous ajouter du texte pour décrire votre solution, pour améliorer votre réponse – Kalamarico

Questions connexes