anthebest Posted September 4, 2012 Share Posted September 4, 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 Link to comment Share on other sites More sharing options...
chpil Posted September 4, 2012 Share Posted September 4, 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 ? Link to comment Share on other sites More sharing options...
djeman Posted September 4, 2012 Share Posted September 4, 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. Link to comment Share on other sites More sharing options...
anthebest Posted September 4, 2012 Author Share Posted September 4, 2012 je voudrai juste ouvrir mon activity menu au click Link to comment Share on other sites More sharing options...
djeman Posted September 4, 2012 Share Posted September 4, 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); Link to comment Share on other sites More sharing options...
anthebest Posted September 4, 2012 Author Share Posted September 4, 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 Link to comment Share on other sites More sharing options...
djeman Posted September 4, 2012 Share Posted September 4, 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é. Link to comment Share on other sites More sharing options...
anthebest Posted September 4, 2012 Author Share Posted September 4, 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 Link to comment Share on other sites More sharing options...
djeman Posted September 4, 2012 Share Posted September 4, 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 Link to comment Share on other sites More sharing options...
anthebest Posted September 4, 2012 Author Share Posted September 4, 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 Link to comment Share on other sites More sharing options...
djeman Posted September 4, 2012 Share Posted September 4, 2012 Le bouton en haut à droite sur la vue du logcat, ça bloque le scroll :) Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.