Aller au contenu

Actyvity view et preference


KLeMiX

Recommended Posts

Bonjour,

J'ai fait un jeux de dames avec une IA ( tres simpliste ).

J'ai mon Activity :

public class Jeux extends Activity {

/** Called when the activity is first created. */
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("Dames","Constructeur JeuxView");
        setContentView(new JeuxView(this));
        }
    public boolean onCreateOptionsMenu(Menu Jeux ) {

        //Création d'un MenuInflater qui va permettre d'instancier un Menu XML en un objet Menu
        MenuInflater inflater = getMenuInflater();
        //Instanciation du menu XML spécifier en un objet Menu
        inflater.inflate(R.layout.menu, Jeux);

        //Il n'est pas possible de modifier l'icône d'entête du sous-menu via le fichier XML on le fait donc en JAVA
//        Jeux.getItem(0).getSubMenu().setHeaderIcon(R.drawable.option_white);

        return true;
     }

       //Méthode qui se déclenchera au clic sur un item
      public boolean onOptionsItemSelected(MenuItem item) {
         //On regarde quel item a été cliqué grâce à son id et on déclenche une action
         switch (item.getItemId()) {
            case R.id.option:
               Toast.makeText(Jeux.this, "Option", Toast.LENGTH_SHORT).show();
               return true;
            case R.id.reset:
                Toast.makeText(Jeux.this, "New Game", Toast.LENGTH_SHORT).show();
                JeuxView.resetJeuxView();
                return true;
            case R.id.debug:
                Toast.makeText(Jeux.this, "Debug", Toast.LENGTH_SHORT).show();
                JeuxView.debugJeuxView();
                return true;
           case R.id.quitter:
               //Pour fermer l'application il suffit de faire finish()
               finish();
               return true;
         }
         return false;}


}

jusque la rien d'extrodinaire :

Ma view : ou il a tout le code.

Mais je n'arrive pas a relier les preferences. Faut le lier a l'Activity ? a la vue ? je voudrais juste retenir le jeux en cours.

J'ai regardé plusieur tuto. Mais activity, view, pref c'est flou flou flou pour moi. J'ai fait très peu de java dans ma vie.

Merci pour vos eclairages ou vos liens en tout genre.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

J'ai fait un jeux de dames avec une IA ( tres simpliste ).

J'ai mon Activity :

public class Jeux extends Activity {

/** Called when the activity is first created. */
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("Dames","Constructeur JeuxView");
        setContentView(new JeuxView(this));
        }
    public boolean onCreateOptionsMenu(Menu Jeux ) {

        //Création d'un MenuInflater qui va permettre d'instancier un Menu XML en un objet Menu
        MenuInflater inflater = getMenuInflater();
        //Instanciation du menu XML spécifier en un objet Menu
        inflater.inflate(R.layout.menu, Jeux);

        //Il n'est pas possible de modifier l'icône d'entête du sous-menu via le fichier XML on le fait donc en JAVA
//        Jeux.getItem(0).getSubMenu().setHeaderIcon(R.drawable.option_white);

        return true;
     }

       //Méthode qui se déclenchera au clic sur un item
      public boolean onOptionsItemSelected(MenuItem item) {
         //On regarde quel item a été cliqué grâce à son id et on déclenche une action
         switch (item.getItemId()) {
            case R.id.option:
               Toast.makeText(Jeux.this, "Option", Toast.LENGTH_SHORT).show();
               return true;
            case R.id.reset:
                Toast.makeText(Jeux.this, "New Game", Toast.LENGTH_SHORT).show();
                JeuxView.resetJeuxView();
                return true;
            case R.id.debug:
                Toast.makeText(Jeux.this, "Debug", Toast.LENGTH_SHORT).show();
                JeuxView.debugJeuxView();
                return true;
           case R.id.quitter:
               //Pour fermer l'application il suffit de faire finish()
               finish();
               return true;
         }
         return false;}


}

jusque la rien d'extrodinaire :

Ma view : ou il a tout le code.

Mais je n'arrive pas a relier les preferences. Faut le lier a l'Activity ? a la vue ? je voudrais juste retenir le jeux en cours.

J'ai regardé plusieur tuto. Mais activity, view, pref c'est flou flou flou pour moi. J'ai fait très peu de java dans ma vie.

Merci pour vos eclairages ou vos liens en tout genre.

Tu souhaites créer un écran de préférences utilisateurs ? C'est bien ce la ?

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Tu souhaites créer un écran de préférences utilisateurs ? C'est bien ce la ?

L'écran je m'en fou, je veux surtout c'est retenir mon jeux en cours. Les préférences m'ont semblé simple au premier abords, mais non en faite.

Lien vers le commentaire
Partager sur d’autres sites

Au contraire, les Preferences, c'est vraiment très simple à utiliser.

Pour sauvegarder une valeur, il te suffit de faire

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String val = prefs.getString("maValeur", "valdefaut");  // ou getInt / getLong / getBoolean / ...

qui te permet de récupérer une valeur chaine (entière/longue/booléenne/...) préalablement sauvegardée dans les préférences de l'application sous la clef "maValeur" (avec, dans le cas où la valeur n'existe pas dans les préférences (aucune sauvegarde effectuée), récupération d'une valeur par défaut spécifiée dans le deuxième paramètre du getXXX)

Et pour sauvegarder une valeur

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("maValeur", "valeur de la préférence"); // ou putInt/putLong/putBoolean/...
editor.apply();

qui sauvegarde la valeur passée en deuxième paramètre de putXXX sous la clef passée en premier paramètre, valeur récupérable ensuite comme spécifié plus haut

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Et tu as quelle erreur ?? (j'ai beau frotter ma boule de crystal, je n'arrive pas à voir ton écran ni à deviner quelle erreur tu rencontres...)

T'es pas tres fort en faite ;)

Je remets cela dans mon code et je te dit

merci

Lien vers le commentaire
Partager sur d’autres sites

04-21 16:36:18.887: ERROR/AndroidRuntime(7305): FATAL EXCEPTION: main
04-21 16:36:18.887: ERROR/AndroidRuntime(7305): java.lang.RuntimeException: Unable to start activity ComponentInfo{Jeux2Dames.klemix.com/Jeux2Dames.klemix.com.Jeux}: java.lang.NullPointerException
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2781)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2797)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at android.app.ActivityThread.access$2300(ActivityThread.java:135)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2132)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at android.os.Looper.loop(Looper.java:143)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at android.app.ActivityThread.main(ActivityThread.java:4914)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at java.lang.reflect.Method.invokeNative(Native Method)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at java.lang.reflect.Method.invoke(Method.java:521)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at dalvik.system.NativeStart.main(Native Method)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305): Caused by: java.lang.NullPointerException
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at Jeux2Dames.klemix.com.JeuxView$TableauDamier.loadDamier(JeuxView.java:901)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at Jeux2Dames.klemix.com.JeuxView.resetJeuxView(JeuxView.java:130)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at Jeux2Dames.klemix.com.JeuxView.<init>(JeuxView.java:105)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at Jeux2Dames.klemix.com.Jeux.onCreate(Jeux.java:20)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1065)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2745)
04-21 16:36:18.887: ERROR/AndroidRuntime(7305):     ... 11 more

Lien vers le commentaire
Partager sur d’autres sites

 
public JeuxView(Context context) {
    super(context);

    mIconsSize = ICON_SIZE;
    mPlayMaxX=5*mIconsSize;
    mPlayMaxY=2*mIconsSize;

    mCaseNoir = prepareBitmap(getResources().getDrawable(R.drawable.casenoir), mIconsSize,
            mIconsSize);
    mCaseBlanche = prepareBitmap(getResources().getDrawable(R.drawable.caseblanche), mIconsSize,
            mIconsSize);
    mPionPlayer = prepareBitmap(getResources().getDrawable(R.drawable.pionplayer), mIconsSize,
            mIconsSize);
    mPionIa = prepareBitmap(getResources().getDrawable(R.drawable.pionia), mIconsSize,
            mIconsSize);
    mDamePlayer = prepareBitmap(getResources().getDrawable(R.drawable.dameplayer), mIconsSize,
            mIconsSize);
    mDameIa = prepareBitmap(getResources().getDrawable(R.drawable.dameia), mIconsSize,
            mIconsSize);
    // mTextFile = prepareBitmap(getResources().getDrawable(R.drawable.txt_file), mIconsSize,
   //         mIconsSize);
    mBoutonplay = prepareBitmap(getResources().getDrawable(R.drawable.grk_bouton_n),mPlayMaxX,
    		mPlayMaxY);

    resetJeuxView();
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
	//SharedPreferences.Editor editor = prefs.edit();
	mCodeLoad = prefs.getString("mCodeLoad", "1-20A10C20B");

}

.....

  public void JouerCoup()
   {
   	SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this.getContext());
   	SharedPreferences.Editor editor = prefs.edit();
   	editor.putString("mCodeLoad", tabDamier.savdamier()); // ou putInt/putLong/putBoolean/...
   	editor.commit();

si ca peut t'aider a m'aider :D

Lien vers le commentaire
Partager sur d’autres sites

C'est donc une erreur d'exécution, pas de compilation.

Tu as un NullPointerException ligne 901, dans ton fichier JeuView.java, dans la méthode loadDamier...

A quoi correspond cette ligne ?

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