anthebest Posté(e) 4 septembre 2012 Share Posté(e) 4 septembre 2012 Bonjour. Je suis débutant et je voudrai pour que ce soit plus propre répartir mon activité en plusieurs classes. j'ai mon MainActivity: package isep.appli.je; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.Button; public class MainActivity extends Activity implements View.onclickListener { Button b = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b = (Button) findViewById(R.id.button1); b.setonclickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } public void onclick(View v) { Menu m = new Menu(); } } et mon Menu.java package isep.appli.je; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Menu extends Activity implements View.onclickListener{ private Button news; private Button profil; private Button planning; private Button notes; private Button test; private Button annuaire; @Override public menu(){ setContentView(R.layout.menu); news = (Button) findViewById(R.id.news); profil = (Button) findViewById(R.id.profil); planning = (Button) findViewById(R.id.planning); notes = (Button) findViewById(R.id.notes); test = (Button) findViewById(R.id.test); annuaire = (Button) findViewById(R.id.annuaire); } public void onclick(View arg0) { switch(arg0.getId()){ case R.id.news: news.setText("Test"); break; case R.id.profil: break; case R.id.planning: break; case R.id.notes: break; case R.id.test: break; case R.id.annuaire: break; } } } le problème est Menu m = new Menu(); je ne peux pas l'instancier, ce ne doit donc pas être comme ça qu'il faut faire Merci :D Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 4 septembre 2012 Share Posté(e) 4 septembre 2012 Effectivement, cela ne marche pas car une Activity (ta classe Menu hérite de Activity) ne peut être instanciée que par Android Quel est ton besoin, et qu'est-ce que tu cherches à faire, notamment lorsque l'utilisateur clique sur le bouton ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
djeman Posté(e) 4 septembre 2012 Share Posté(e) 4 septembre 2012 Wé faut voir ce que tu veux faire. Le onCreateOptionsMenu sert à faire un menu de base d'android comme expliqué ici: http://developer.and...s/ui/menus.html Définition du layout du menu dans onCreateOptionsMenu récupération des events de selection dans onOptionsItemSelected. Edit: Les menus contextuels sont expliqués plus bas. Lien vers le commentaire Partager sur d’autres sites More sharing options...
anthebest Posté(e) 4 septembre 2012 Auteur Share Posté(e) 4 septembre 2012 je voudrai juste ouvrir mon activity menu au click Lien vers le commentaire Partager sur d’autres sites More sharing options...
djeman Posté(e) 4 septembre 2012 Share Posté(e) 4 septembre 2012 Ben c'est qu'elle ne représente rien ton activity menu dans l'état. Le plus simple c'est d'imaginer que t'as une vue par activity, si tu veux vraiment en faire une activity va lui falloir les méthodes de base (oncreate,...) et dans sa déclaration lui rajouter extends Activity et la déclarer dans le manifest ensuite tu peux la lancer avec : Intent intent = new Intent(Activity.this, ActivityToLaunch.class); startActivity(intent); // lance la nouvelle activité this.finish(); // finis l'activité en cours Mais si tu veux juste faire un dialog style messagebox avec bouton c'est pas la même. On peut passer des valeurs entre activité avec les bundles, ex: Intent intent = new Intent(MiscActivity.this, InstallerActivity.class); Bundle bd = new Bundle(); bd.putBoolean("uninstall", true); intent.putExtras(bd); startActivity(intent); this.finish(); Et tu le récup dans ta new activity avec: Bundle b = getIntent().getExtras(); if (b != null) uninstall = b.getBoolean("uninstall", false); Lien vers le commentaire Partager sur d’autres sites More sharing options...
anthebest Posté(e) 4 septembre 2012 Auteur Share Posté(e) 4 septembre 2012 Merci, c'est ceux que j'essai de faire, mais à chaque fois ça plante package isep.appli.je; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; import android.view.View; import android.widget.Button; public class MainActivity extends Activity implements View.onclickListener { Button b = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b = (Button) findViewById(R.id.button1); b.setonclickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } public void onclick(View v) { Intent intent = new Intent(MainActivity.this, Menu.class); startActivity(intent); this.finish(); } } package isep.appli.je; import android.os.Bundle; import android.app.Activity; public class Menu extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.menu); } } j'ai aussi ajouté <activity android:name=".Menu" ></activity> dans mon manifest Lien vers le commentaire Partager sur d’autres sites More sharing options...
djeman Posté(e) 4 septembre 2012 Share Posté(e) 4 septembre 2012 N'hésite pas à utiliser le déboggeur, elle plante sur le setContentView à priori vu qu'il n'y a rien d'autre :P Donc soit le xml foireux soit tu ne l'as pas déclaré dans le manifest, ça se voit dans le logcat ça !!! <activity android:name=".InstallerActivity" android:label="@string/app_name" android:theme="@style/Theme.Sherlock" android:configChanges="keyboardHidden|orientation|screenSize" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/Theme.Sherlock" android:configChanges="keyboardHidden|orientation|screenSize" android:screenOrientation="portrait"> </activity> .... <activity android:name=".LogsActivity" android:label="@string/app_logs" android:theme="@style/Theme.Sherlock" android:configChanges="keyboardHidden|orientation|screenSize" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden"> </activity> Chaque activité doit être déclaré. Lien vers le commentaire Partager sur d’autres sites More sharing options...
anthebest Posté(e) 4 septembre 2012 Auteur Share Posté(e) 4 septembre 2012 j'ai deux AndroidManifest.xml et dans les deux j'ai: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="isep.appli.je" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Menu" android:label="@string/menu"></activity> </application> </manifest> en revanche j'ai bien comme erreur que l'activité n'est pas prouvée Lien vers le commentaire Partager sur d’autres sites More sharing options...
djeman Posté(e) 4 septembre 2012 Share Posté(e) 4 septembre 2012 import android.view.Menu; Intent intent = new Intent(MainActivity.this, Menu.class); Tu devrais changer le nom de ta classe, menu c'est déjà pris. Edit: Et utilises le déboggeur pour dire où ça bloque, c'est plus facile que de deviner :P Lien vers le commentaire Partager sur d’autres sites More sharing options...
anthebest Posté(e) 4 septembre 2012 Auteur Share Posté(e) 4 septembre 2012 Super, ça fonctionne je n'ai renommé en MainMenu. j'ai un peut du ma pour utiliser log cat car quand je scroll pour voir les erreurs ça se fixe pendant 10s puis repart en bas Merci beaucoup Lien vers le commentaire Partager sur d’autres sites More sharing options...
djeman Posté(e) 4 septembre 2012 Share Posté(e) 4 septembre 2012 Le bouton en haut à droite sur la vue du logcat, ça bloque le scroll :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.