Aller au contenu

activity sur plusieurs fichiers


anthebest

Recommended Posts

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

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

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

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

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

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

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...