Jump to content

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.

Link to comment
Share on other 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 ?

Link to comment
Share on other 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.

Link to comment
Share on other 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

Link to comment
Share on other 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

Link to comment
Share on other 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

Link to comment
Share on other 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

Link to comment
Share on other 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 ?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...