Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Android

    14 décembre 2017 à 16:46:46

    Bonjour  à tous

    Je suis bloqué au début même ce ce cours, avant le premier quizz, à l’exécution de l'appli de présentation. Celle-ci plante au démarrage. Tout fonctionne si je ne mets que l'interface, mais dès que j'introduis

    PlayButton.setEnabled(false); 


    dans onCreate, ça ne va plus, l'application démarre mais se ferme aussitôt:

    voici mon ce xml:

    <?xml version="1.0" encoding="utf-8"?>
    
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
    
        tools:context="com.example.philippe.topquiz.MainActivity">
    
        <TextView
            android:id="@+id/activity_main_greeting_txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:padding="20dp"
            android:text="Bienvenue, quel est votre nom?"/>
        
        <EditText
            android:id="@+id/activity_main_name_input"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="10dp"
            android:layout_marginEnd="10dp"
            android:hint="Tapez votre nom"/>
    
        <Button
            android:id="@+id/activity_main_play_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:padding="30dp"
            android:layout_gravity="center_horizontal"
            android:text="Jouer" />
    
    
    
    </LinearLayout>


    bien que je pense pas que ça vienne de là

    et le code java:

    package com.example.philippe.topquiz;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    
    public class MainActivity extends AppCompatActivity {
        private TextView mGreetingText;
        private EditText mNameInput;
        private Button mPlayButton;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        
            mGreetingText = (TextView)findViewById(R.id.activity_main_greeting_txt);
            mNameInput = (EditText)findViewById(R.id.activity_main_name_input) ;
            mPlayButton = (Button)findViewById(R.id.activity_main_play_btn) ;
            mPlayButton.setEnabled(false);   // ça fait planter l'appli
            
            /* ça aussi:
            mNameInput.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            
                }
        
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
            
                }
        
                @Override
                public void afterTextChanged(Editable s) {
            
                }
            });
            */
            
            setContentView(R.layout.activity_main);
        }
    }


    et le log cat:

    12-14 10:32:39.654 2230-3226/com.google.android.gms I/FA-SVC: App measurement is starting up, version: 11580
    12-14 10:32:39.681 2230-3318/com.google.android.gms I/FA-SVC: This instance being marked as an uploader
    12-14 10:32:43.016 2230-2240/com.google.android.gms W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/com.google.android.gms/databases/networkstatistics.sqlite' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.

    Je ne comprend d'ailleurs pas ce que SQLite vient faire là dedans.

    Merci d'avance des réponses

    -
    Edité par PhilippeLaffez 14 décembre 2017 à 16:52:28

    • Partager sur Facebook
    • Partager sur Twitter
      14 décembre 2017 à 17:47:15

      La référence du bouton que tu récupères est nulle car tu donnes le layout APRES la récupération de la référence. L'appel à la méthode setContientView doit être avant les appels à la méthode findViewById.
      • Partager sur Facebook
      • Partager sur Twitter
        14 décembre 2017 à 18:54:22

        Merci de ton aide, c'est ok maintenant.
        • Partager sur Facebook
        • Partager sur Twitter
          28 décembre 2017 à 18:07:05

          Bonjour,

          J'ai une autre question, concernant cette fois-ci le chapitre concernant la récupération du score.

          Il faut ajouter le code suivant:

          Intent intent = new Intent();
          intent.putExtra(BUNDLE_EXTRA_SCORE, mScore);
          setResult(RESULT_OK, intent);
          finish();

          quelque part dans la GameActivity.

          Mais ou? Ala fin de OnCreate ? Ailleurs ?

          Merci d'éclairer ma lanterne.

          D'autre part, est-ce normal qu'Android studio soit si lent ? J'ai un systeme 64 bits avec 8GB de mémoire et pres de 100 GB de DD dispo. ¨Pour démarrer mon appli il faut plusieurs minutes. (quelque secondes pour démarrer une appli java, encore moins pour une appli delphi)

          • Partager sur Facebook
          • Partager sur Twitter
            30 décembre 2017 à 18:23:28

            Merci de bien me repondre a cette question ?!!

            À quoi sert le fichier string.xml contenu dans le dossier « values ».

            • Partager sur Facebook
            • Partager sur Twitter
              2 janvier 2018 à 19:52:11

              est possible d enregistrer plusieurs empreinte digitale sur un même téléphone android
              • Partager sur Facebook
              • Partager sur Twitter
                3 janvier 2018 à 18:08:12

                Dans string.xml il y a comme son nom l'indique des chaines de caractères, notamment le nom de l'application (il suffit de l'ouvrir)

                Pour les empreintes, je ne sais pas.

                J'ai une autre question concernant le cours:

                J'ai maintenant progressé dans le cours, mais il y a toujours des choses que je ne comprend pas.

                Maintenant l'application stoppe aussitôt après lancement, sans que j'en comprenne la raison. Sans doute du code mal placé ? J'avoue que pour moi ce cours n'est pas très clair.

                Voici le code:

                Main Java:

                <?xml version="1.0" encoding="utf-8"?>
                
                <LinearLayout
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    xmlns:tools="http://schemas.android.com/tools"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical"
                
                    tools:context="com.example.philippe.topquiz.controller.MainActivity">
                
                    <TextView
                        android:id="@+id/activity_main_greeting_txt"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_margin="10dp"
                        android:padding="20dp"
                        android:text="Bienvenue, quel est votre nom?"/>
                    
                    <EditText
                        android:id="@+id/activity_main_name_input"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="10dp"
                        android:layout_marginEnd="10dp"
                        android:hint="Tapez votre nom"/>
                
                    <Button
                        android:id="@+id/activity_main_play_btn"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:padding="30dp"
                        android:layout_gravity="center_horizontal"
                        android:text="Jouer" />
                
                
                
                </LinearLayout>
                

                Game:

                package vue;
                
                import android.content.Intent;
                import android.support.v7.app.AppCompatActivity;
                import android.os.Bundle;
                import android.view.View;
                import android.widget.Button;
                import android.widget.TextView;
                
                import com.example.philippe.topquiz.R;
                
                import java.util.Arrays;
                
                import model.Question;
                import model.QuestionBank;
                
                public class GameActivity extends AppCompatActivity  implements View.OnClickListener{
                    private TextView mQuestionText;
                    private Button mAnswerButton1;
                    private Button mAnswerButton2;
                    private Button mAnswerButton3;
                    private Button mAnswerButton4;
                    private QuestionBank mQuestion;
                    private  Question mCurrentQuestion;
                    
                    private int mNumberOfQuestions;
                    private int mScore;
                    public static final String BUNDLE_EXTRA_SCORE = "BUNDLE_EXTRA_SCORE";
                    
                    
                    @Override
                    protected void onCreate(Bundle savedInstanceState) {
                        super.onCreate(savedInstanceState);
                        mNumberOfQuestions = 4;
                        mScore = 0;
                        setContentView(R.layout.activity_game);
                        mQuestion = this.createQuestionBank();
                        mQuestionText = (TextView)findViewById(R.id.activity_game_question_text);
                        mAnswerButton1 = (Button)findViewById(R.id.activity_game_answer1_btn);
                        mAnswerButton2 = (Button)findViewById(R.id.activity_game_answer2_btn);
                        mAnswerButton3 = (Button)findViewById(R.id.activity_game_answer3_btn);
                        mAnswerButton1 = (Button)findViewById(R.id.activity_game_answer4_btn);
                        // Use the same listener for the four buttons.
                // The tag value will be used to distinguish the button triggered
                        mAnswerButton1.setOnClickListener(this);
                        mAnswerButton2.setOnClickListener(this);
                        mAnswerButton3.setOnClickListener(this);
                        mAnswerButton4.setOnClickListener(this);
                        // Use the tag property to 'name' the buttons
                        mAnswerButton1.setTag(0);
                        mAnswerButton2.setTag(1);
                        mAnswerButton3.setTag(2);
                        mAnswerButton4.setTag(3);
                     
                    }
                    
                    QuestionBank createQuestionBank(){
                        // mériterit d'être déplacé dans une classe spécifique
                        Question question1 = new Question("En quelle année a eu lieu la bataille d'Austerliz ?",
                                                          Arrays.asList("1803",
                                                                            "1804",
                                                                            "1805",
                                                                            "1806"
                                                                  ),
                    2);
                        
                        Question question2 = new Question("En quelle année a eu lieu la bataille de Tolbiac ?",
                                                        Arrays.asList("495",
                                                                          "496",
                                                                          "497",
                                                                          "498"
                                ),
                                1);
                    
                        Question question3 = new Question("En quelle année a eu lieu la bataille de Cannes ?",
                                                         Arrays.asList("216 avant JC",
                                                                           "180 avant JC",
                                                                           "180",
                                                                           "216"
                                ),
                                0);
                    
                        Question question4 = new Question("En quelle année eu lieu la bataille de Pavie, défaire de François Ier?",
                                                       Arrays.asList("1515",
                                                                         "1525",
                                                                         "1530",
                                                                         "1535"
                                ),
                                1);
                        Question question5 = new Question("En quelle année a eu lieu le siège de Paris par Attila ?",
                                Arrays.asList("330",
                                        "412",
                                        "451",
                                        "513"
                                ),
                                2);
                        return new QuestionBank(Arrays.asList(question1,question2,question3,question4,question5));
                        
                  }
                    
                    private void displayQuestion(final Question question) {
                        this.setgQuestionTextTexte(question.getQuestion());
                        this.setgAnswerButton1Text(question.getChoiceList().get(0).toString());
                        this.setgAnswerButton2Text(question.getChoiceList().get(1).toString());
                        this.setgAnswerButton3Text(question.getChoiceList().get(2).toString());
                        this.setgAnswerButton4Text(question.getChoiceList().get(3).toString());
                    
                       
                        
                    }
                  
                    
                    
                    
                    // Setters et getters
                    
                    public void setgQuestionTextTexte(String s) {
                        this.mQuestionText.setText(s);
                    }
                    
                    public void setgAnswerButton1Text(String s) {
                        this.mAnswerButton1.setText(s);
                    }
                    
                    public void setgAnswerButton2Text(String s) {
                        this.mAnswerButton2.setText(s);
                    }
                    
                    public void setgAnswerButton3Text(String s) {
                        this.mAnswerButton3.setText(s);
                    }
                    
                    public void setgAnswerButton4Text(String s) {
                        this.mAnswerButton4.setText(s);
                    }
                    
                    
                    @Override
                    public void onClick(View v) {
                        int responseIndex = (int) v.getTag();
                        if (--mNumberOfQuestions == 0) {
                                    // No question left, end the game
                         /*   int scoremax = data.getIntExtra(GameActivity.BUNDLE_EXTRA_SCORE,0);
                            if (scoremax<mScore){
                            
                            }*/
                            Intent intent = new Intent();
                            intent.putExtra(BUNDLE_EXTRA_SCORE, mScore);
                            setResult(RESULT_OK, intent);
                            finish();
                                } else {
                                    if (responseIndex ==mCurrentQuestion.getAnswerIndex()){
                                        mScore+=1;
                            }
                                    mCurrentQuestion = mQuestion.getQuestion();
                                    displayQuestion(mCurrentQuestion);
                                    mNumberOfQuestions-=1;
                                }
                        
                    }
                }
                


                Question:

                package model;
                
                import java.util.List;
                
                /**
                 * Created by Philippe on 15/12/2017.
                 */
                
                public class Question {
                    
                    private String mQuestion;
                    private List<String> mChoiceList;
                    private int mAnswerIndex;
                    
                    public Question(String question, List<String> choiceList, int answerIndex) {
                        this.setQuestion(question);
                        this.setChoiceList(choiceList);
                        this.setAnswerIndex(answerIndex);
                    }
                    
                    public String getQuestion() {
                        return mQuestion;
                    }
                    
                    public void setQuestion(String question) {
                        mQuestion = question;
                    }
                    
                    public List<String> getChoiceList() {
                        return mChoiceList;
                    }
                    
                    public void setChoiceList(List<String> choiceList) {
                        if (choiceList == null) {
                            throw new IllegalArgumentException("Array cannot be null");
                        }
                        
                        mChoiceList = choiceList;
                    }
                    
                    public int getAnswerIndex() {
                        return mAnswerIndex;
                    }
                    
                    public void setAnswerIndex(int answerIndex) {
                        if (answerIndex < 0 || answerIndex >= mChoiceList.size()) {
                            throw new IllegalArgumentException("Answer index is out of bound");
                        }
                        
                        mAnswerIndex = answerIndex;
                    }
                    
                    @Override
                    public String toString() {
                        return "Question{" +
                                "mQuestion='" + mQuestion + '\'' +
                                ", mChoiceList=" + mChoiceList +
                                ", mAnswerIndex=" + mAnswerIndex +
                                '}';
                    }
                }
                
                package model;
                
                import java.util.Collections;
                import java.util.List;
                
                /**
                 * Created by Philippe on 15/12/2017.
                 */
                
                public class QuestionBank {
                    private List<Question> mQuestionList;
                    private int mNextQuestionIndex;
                    
                    public QuestionBank(List<Question> questionList) {
                        mQuestionList = questionList;
                        
                        // Shuffle the question list
                        Collections.shuffle(mQuestionList);
                        
                        mNextQuestionIndex = 0;
                    }
                    
                    public Question getQuestion() {
                        // Ensure we loop over the questions
                        if (mNextQuestionIndex == mQuestionList.size()) {
                            mNextQuestionIndex = 0;
                        }
                        
                        // Please note the post-incrementation
                        return mQuestionList.get(mNextQuestionIndex++);
                    }
                }
                
                

                User

                package model;
                
                /**
                 * Created by Philippe on 15/12/2017.
                 */
                
                public class User {
                    private String mFirstName;
                    
                    
                    // getters et setters
                public void setFirstName(String s)
                {this.mFirstName = s;
                }
                    
                    public String getFirstName() {
                        return this.mFirstName;
                    }
                }

                et les codes xml

                Main

                <?xml version="1.0" encoding="utf-8"?>
                
                <LinearLayout
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    xmlns:tools="http://schemas.android.com/tools"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical"
                
                    tools:context="com.example.philippe.topquiz.controller.MainActivity">
                
                    <TextView
                        android:id="@+id/activity_main_greeting_txt"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_margin="10dp"
                        android:padding="20dp"
                        android:text="Bienvenue, quel est votre nom?"/>
                    
                    <EditText
                        android:id="@+id/activity_main_name_input"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginStart="10dp"
                        android:layout_marginEnd="10dp"
                        android:hint="Tapez votre nom"/>
                
                    <Button
                        android:id="@+id/activity_main_play_btn"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="20dp"
                        android:padding="30dp"
                        android:layout_gravity="center_horizontal"
                        android:text="Jouer" />
                
                
                
                </LinearLayout>
                

                et game

                <?xml version="1.0" encoding="utf-8"?>
                
                    <LinearLayout
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    xmlns:tools="http://schemas.android.com/tools"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical"
                    tools:context="com.example.philippe.topquiz.controller.GameActivity">
                <TextView
                    android:id="@+id/activity_game_question_text"
                    android:layout_height="0dp"
                    android:layout_width="match_parent"
                    android:layout_weight="2"
                    android:textColor="@color/colorPrimary"
                    android:layout_marginTop="5dp"
                    android:layout_marginBottom="5dp"
                    android:layout_marginStart="15dp"
                    android:layout_marginEnd="15dp"
                    android:textSize="18sp"
                    android:textStyle="bold"
                    android:gravity="center"
                    android:text="Question?"  >
                </TextView>
                
                    <Button
                        android:id="@+id/activity_game_answer1_btn"
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_weight="1"
                        android:textColor="@color/colorAccent"
                        android:background="@android:color/white"
                        android:textSize="20sp"
                        android:text="Answer 1"/>
                
                    <Button
                        android:id="@+id/activity_game_answer2_btn"
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_weight="1"
                        android:textColor="@color/colorAccent"
                        android:background="@android:color/white"
                        android:textSize="20sp"
                        android:text="Answer 2"/>
                
                    <Button
                        android:id="@+id/activity_game_answer3_btn"
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_weight="1"
                        android:textColor="@color/colorAccent"
                        android:background="@android:color/white"
                        android:textSize="20sp"
                        android:text="Answer 3"/>
                
                    <Button
                        android:id="@+id/activity_game_answer4_btn"
                        android:layout_width="match_parent"
                        android:layout_height="0dp"
                        android:layout_weight="1"
                        android:textColor="@color/colorAccent"
                        android:background="@android:color/white"
                        android:textSize="20sp"
                        android:text="Answer 4"/>
                
                </LinearLayout>

                C'est un peu long, mais nécessaire ;)








                -
                Edité par PhilippeLaffez 3 janvier 2018 à 18:26:00

                • Partager sur Facebook
                • Partager sur Twitter
                  3 janvier 2018 à 23:52:48

                  Si ton application plante elle produit dans le logcat une stacktrace. C'est elle qui va te permettre de savoir d'où vient le crash. Posté la ici qu'on la regarde.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 janvier 2018 à 18:20:02

                    Bonjour,

                    J'ai vu le stacktrace puis je l'ai perdu. Android studio est trop b.. que, tro usine à gaz, je retrouve pas.

                    J'ai trouvé ça dans les event logs:


                    01/04 17:40:09: Launching app
                    $ adb install-multiple -r -t C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\intermediates\split-apk\debug\slices\slice_4.apk C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\intermediates\split-apk\debug\slices\slice_9.apk C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\intermediates\split-apk\debug\slices\slice_8.apk C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\intermediates\split-apk\debug\slices\slice_2.apk C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\intermediates\split-apk\debug\slices\slice_3.apk C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\intermediates\split-apk\debug\slices\slice_6.apk C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\intermediates\split-apk\debug\slices\slice_5.apk C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\intermediates\split-apk\debug\slices\slice_1.apk C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\intermediates\split-apk\debug\slices\slice_7.apk C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\intermediates\split-apk\debug\slices\slice_0.apk C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\intermediates\split-apk\debug\dep\dependencies.apk C:\Users\Philippe\AndroidStudioProjects\TopQuiz\app\build\outputs\apk\debug\app-debug.apk
                    Split APKs installed
                    $ adb shell am start -n "com.example.philippe.topquiz/vue.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
                    Client not ready yet..Waiting for process to come online
                    Connected to process 2693 on device emulator-5554
                    Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
                    I/InstantRun: starting instant run server: is main process
                    D/AndroidRuntime: Shutting down VM
                    E/AndroidRuntime: FATAL EXCEPTION: main
                                      Process: com.example.philippe.topquiz, PID: 2693


                                      java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.philippe.topquiz/vue.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference

                     voilà le fautif, mais je ne comprend pas à quoi ça correspond dans le code, ni ne trouve de clé permettant de trouver la ligne fautive, à part le fait qu'il  y a un rapport avec des chaines de caratères


                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2679)
                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
                                          at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
                                          at android.os.Handler.dispatchMessage(Handler.java:106)
                                          at android.os.Looper.loop(Looper.java:164)
                                          at android.app.ActivityThread.main(ActivityThread.java:6494)
                                          at java.lang.reflect.Method.invoke(Native Method)
                                          at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
                                       Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
                                          at android.content.ContextWrapper.getPackageName(ContextWrapper.java:135)
                                          at android.app.Activity.getLocalClassName(Activity.java:5854)
                                          at android.app.Activity.getPreferences(Activity.java:5887)
                                          at vue.MainActivity.<init>(MainActivity.java:26)
                                          at java.lang.Class.newInstance(Native Method)
                                          at android.app.Instrumentation.newActivity(Instrumentation.java:1174)
                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)
                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
                                          at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
                                          at android.os.Handler.dispatchMessage(Handler.java:106)
                                          at android.os.Looper.loop(Looper.java:164)
                                          at android.app.ActivityThread.main(ActivityThread.java:6494)
                                          at java.lang.reflect.Method.invoke(Native Method)
                                          at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      7 janvier 2018 à 19:25:49

                      Le problème vient probablement de ton MainActivity... Pourrais-tu le poster ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 janvier 2018 à 0:52:01

                        Bonjour,

                        ce code fonction en Java (avec Eclipse) :

                        private List<Question> mQuestionList = null;

                        ..............................................................................

                        mQuestionList.set(0, questionList.get(0));  (par exemple)
                        Par contre, avec Android Studio, l'application TopQuiz se plante s'il y a ce code dedans.
                        Mais si je place :
                        mQuestionList = questionList ; 
                         avant mQuestionList.set(0, questionList.get(0)); tout fonctionne!
                        Avez-vous une explication?
                        Merci
                        • Partager sur Facebook
                        • Partager sur Twitter
                          8 janvier 2018 à 17:09:59

                          Bonjour,

                          Floriane, voici la MainActivity (jr croyais l'avoir posté, et je m'apperçois que j'ai posté 2X le XML :-(

                          Merci d'avance

                          package vue;
                          
                          import android.content.Intent;
                          import android.content.SharedPreferences;
                          import android.support.v7.app.AppCompatActivity;
                          import android.os.Bundle;
                          import android.text.Editable;
                          import android.text.TextWatcher;
                          import android.view.View;
                          import android.widget.Button;
                          import android.widget.EditText;
                          import android.widget.TextView;
                          
                          import com.example.philippe.topquiz.R;
                          
                          import model.User;
                          
                          
                          public class MainActivity extends AppCompatActivity {
                              private TextView mGreetingText;
                              private EditText mNameInput;
                              private Button mPlayButton;
                              private User mUser= new User();
                              private static final int GAME_ACTIVITY_REQUEST_CODE = 42;
                              
                              private SharedPreferences preferences = getPreferences(MODE_PRIVATE);
                              private static final String NAME = "Prenom";
                              private static final String SCORE = "Score";
                              private int score =0;
                              private String firstname;
                              
                              
                              @Override
                              protected void onCreate(Bundle savedInstanceState) {
                                  super.onCreate(savedInstanceState);
                                  firstname = getPreferences(MODE_PRIVATE).getString(NAME, null);
                                  score = getPreferences(MODE_PRIVATE).getInt(SCORE,0);
                                  
                                  setContentView(R.layout.activity_main);
                                  mGreetingText = (TextView)findViewById(R.id.activity_main_greeting_txt);
                                  if (firstname !=null){
                                      mGreetingText.setText("Bonjour "+firstname+". Votre meilleurs score est: "+Integer.toString(score));
                                      mNameInput = (EditText)findViewById(R.id.activity_main_name_input) ;
                                  }
                                  else {
                                      mNameInput = (EditText)findViewById(R.id.activity_main_name_input) ;
                                  }
                                 
                                  mPlayButton = (Button)findViewById(R.id.activity_main_play_btn) ;
                                  mPlayButton.setEnabled(false);
                             
                                  
                                  
                                  mNameInput.addTextChangedListener(new TextWatcher() {
                                      @Override
                                      public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                                  
                                      }
                              
                                      @Override
                                      public void onTextChanged(CharSequence s, int start, int before, int count) {
                                          mPlayButton.setEnabled(s.toString().length() != 0);
                                      }
                              
                                      @Override
                                      public void afterTextChanged(Editable s) {
                                  
                                      }
                                  });
                                  
                              
                                  mPlayButton.setOnClickListener(new View.OnClickListener() {
                                      
                                  
                                      public void onClick(View v) {
                                          // The user just clicked
                                          mUser.setFirstName(mNameInput.getText().toString());
                                          Intent gameActivity = new Intent(MainActivity.this, GameActivity.class);
                                          startActivityForResult(gameActivity, GAME_ACTIVITY_REQUEST_CODE);
                                      
                                      }
                                  
                                  });
                             
                              }
                              
                              @Override
                              
                              protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                                  
                                  super.onActivityResult(requestCode, resultCode, data);
                                  if (GAME_ACTIVITY_REQUEST_CODE == requestCode && RESULT_OK == resultCode) {
                                      // Fetch the score from the Intent
                                      int score = data.getIntExtra(GameActivity.BUNDLE_EXTRA_SCORE,0);
                                  }
                                  
                              }
                              
                                  protected void OnPause() {
                                  /* D'après ce que j'ai lu, la méthode onDestroy peut ne pas être appelée, tandis qu'il
                                    est certain que la méthode onPause le soit,même à la fin d'une app */
                                  preferences.edit().putString(NAME, mUser.getFirstName()).apply();
                                  preferences.edit().putInt(SCORE, score).apply();
                                  super.onPause();
                              }
                          }



                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            12 février 2018 à 21:15:33

                            Bonsoir SalomonBrys ,

                            je vous remercie pour ces cours et je vous souhaite bon courage pour la suite.

                            bonne continuation

                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 février 2018 à 10:45:50

                              Salut PhilippeLaffez,

                              Je voulais savoir si tu avais pu résoudre ton problème ? Car je rencontre le même actuellement...Si c'est le cas alors aide moi stp.

                              Et si d'autres ont des idées pour résoudre ce problème, Merci de nous le faire partager svp.

                              -
                              Edité par reotra 13 février 2018 à 10:47:19

                              • Partager sur Facebook
                              • Partager sur Twitter

                              L'Imagination est plus importante que le savoir !!!

                                25 février 2018 à 20:11:14

                                Bonjour,

                                Je n'arrive pas à lancer l'émulateur sur Android SDK Windows. 

                                Le Nexus 5S met longtemps à charger avec le message "waiting for the target device to come online". 

                                Le logo Google apparaît avec une barre de chargement pendant 20 minutes.

                                Des fois ça ne fait rien et des fois je vois apparaître un écran noir "android sdk emulation encryption unsuccessful"

                                J'ai des screenshot sur mon autre ordi si vous voulez. 

                                Je vois sur des forums qu'il faut "wipe data" ou tester software/hardware, ce que j'ai fait. 

                                Ou alors télécharger un ancien émulateur "v7a system image" :

                                https://www.youtube.com/watch?v=j9U9ZKOSlTg

                                (à la fin) 

                                Mais ça met longtemps à télécharger, c'est un vieux tuto pour la version Android 5 (là on est à +8 27) et je ne suis pas sûr du résultat après avoir essayé de nombreuses choses.

                                Un autre problème avec Linux, lancer studio.sh ne fonctionne plus, ce fichier est même vide. 

                                Merci pour votre attention 

                                -
                                Edité par Getzel 26 février 2018 à 13:20:09

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  20 mars 2018 à 21:18:38

                                  Bonsoir à vous j'ai un problème avec le TP de la partie 3, du tuto Développez une application pour Android: en réalité j'ai suivi les etapes du tp, même apres avoir configurer le manifest le programme ne fonctionne pas. voici mon code ainsi que l'erreur afficher en console:

                                  ma classe HNArticlesAdapter

                                  public class HNArticlesAdapter extends RecyclerView.Adapter<HNArticlesAdapter.HNArticleViewHolder> implements HNQueryCallback {
                                      private final List<HNArticle> _articles = new ArrayList<HNArticle>();
                                  
                                      @Override
                                      public void onArticlesReceived(List<HNArticle> articles, boolean hasMore) {
                                          _articles.addAll(articles);
                                          notifyDataSetChanged();
                                      }
                                  
                                      @Override
                                      public int getItemCount() {
                                          return _articles.size();
                                      }
                                  
                                      @Override
                                      public HNArticleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                                          View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
                                          return new HNArticleViewHolder(view);
                                      }
                                  
                                      @Override
                                      public void onBindViewHolder(HNArticleViewHolder holder, int position) {
                                          holder.bind(_articles.get(position));
                                      }
                                  
                                      public static class HNArticleViewHolder extends RecyclerView.ViewHolder {
                                  
                                          private final TextView _title;
                                  
                                          public HNArticleViewHolder(View view) {
                                              super(view);
                                              _title = (TextView) view.findViewById(R.id.title);
                                          }
                                  
                                          public void bind(HNArticle article) {
                                              _title.setText(article.title);
                                          }
                                      }
                                  }
                                  


                                  Le MainActivity

                                  public class MainActivity extends AppCompatActivity {
                                  
                                  
                                      private HNQueryTask _task = null;
                                  
                                      @Override
                                      protected void onCreate(Bundle savedInstanceState) {
                                          super.onCreate(savedInstanceState);
                                          setContentView(R.layout.activity_main);
                                  
                                          RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
                                          recyclerView.setLayoutManager(new LinearLayoutManager(this));
                                  
                                          HNArticlesAdapter adapter = new HNArticlesAdapter();
                                          recyclerView.setAdapter(adapter);
                                  
                                          _task = new HNQueryTask(adapter, 80, 1);
                                          _task.execute();
                                      }
                                  
                                      @Override
                                      protected void onDestroy() {
                                          super.onDestroy();
                                          _task.cancel(true);
                                      }
                                  }
                                  

                                  Mon manifest

                                  <?xml version="1.0" encoding="utf-8"?>
                                  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                                      package="com.app.amscorp.mytp">
                                  
                                      <uses-permission android:name="android.permission.INTERNET" />
                                  
                                      <application
                                          android:allowBackup="true"
                                          android:icon="@mipmap/ic_launcher"
                                          android:label="@string/app_name"
                                          android:roundIcon="@mipmap/ic_launcher_round"
                                          android:supportsRtl="true"
                                          android:theme="@style/AppTheme">
                                          <activity android:name=".controller.MainActivity">
                                              <intent-filter>
                                                  <action android:name="android.intent.action.MAIN" />
                                  
                                                  <category android:name="android.intent.category.LAUNCHER" />
                                              </intent-filter>
                                          </activity>
                                      </application>
                                  
                                  </manifest>

                                  Main_activity.xml

                                  <?xml version="1.0" encoding="utf-8"?>
                                  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                      xmlns:app="http://schemas.android.com/apk/res-auto"
                                      xmlns:tools="http://schemas.android.com/tools"
                                      android:layout_width="match_parent"
                                      android:layout_height="match_parent"
                                      tools:context="com.app.amscorp.mytp.controller.MainActivity">
                                  
                                      <android.support.v7.widget.RecyclerView
                                          android:id="@+id/recyclerView"
                                          android:layout_width="match_parent"
                                          android:layout_height="match_parent" />
                                  
                                  </FrameLayout>

                                  j'ai configurer mon gradle et importer le .jar comme indiquer et voici l'erreur que cela me donne

                                  03-20 21:13:06.895 2836-2866/com.app.amscorp.mytp I/System.out: [CDS][DNS]Unable to resolve host "hnapp.com": No address associated with hostname
                                  03-20 21:13:06.897 2836-2866/com.app.amscorp.mytp E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                                                                                                      Process: com.app.amscorp.mytp, PID: 2836
                                  03-20 21:13:07.014 2836-2836/com.app.amscorp.mytp D/ActivityThread: ACT-AM_ON_PAUSE_CALLED ActivityRecord{1e2b8bbc token=android.os.BinderProxy@2c85f745 {com.app.amscorp.mytp/com.app.amscorp.mytp.controller.MainActivity}}
                                  03-20 21:13:07.142 2836-2836/com.app.amscorp.mytp D/ActivityThread: ACT-PAUSE_ACTIVITY_FINISHING handled : 0 / android.os.BinderProxy@2c85f745
                                  03-20 21:13:07.532 2836-2867/com.app.amscorp.mytp D/OpenGLRenderer: Flushing caches (mode 0)
                                  






                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    6 avril 2018 à 16:36:48

                                    Bonjour,

                                    Je parcours actuellement les différents cours android et je bloque un peu sur les layout. Je n'ai pas trouvé le moyen de réaliser un layout vertical qui comprendrait un titre, une listeview et un boutton. Mon problème est que je n'arrive pas à mettre le titre en haut et le boutton tout en bas de mon layout vertical (listview au mileu) :

                                    Layout problème

                                    Je pense que mon problème n'est pas sorcier mais je n'y arrive pas. J'ai l'impression que la listview pose de probleme car elle n'a pas de taille prédéfinis. Peut etre avec une scroll view ?

                                    Merci d'avance pour vos réponses

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      6 avril 2018 à 18:14:27

                                      Certainement parce que ta liste est vide ! Essaye avec une liste pré-remplie
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                                        8 avril 2018 à 19:57:21

                                        Bonjour,

                                        Merci de la réponse mais le problème c'est que ma liste contient des périphérique bluetooth et donc non connus à l'avance

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          9 avril 2018 à 8:42:01

                                          Il faudrait peux être revoir ton manifest, car c'est dans ce fichier que l'on donne les permission d'une application d'accéder à tel ou tel ressource (bluetooth, sms, email et je ne sais quoi d'autre). revoir le chapitre qui pour sur les maifest d'une application android, je crois que c'est de là que vient ton problème. l'application ne détecte aucun bluetooth dont n'affiche rien.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            14 avril 2018 à 20:57:24

                                            Bonjour à tous et merci OpenClassrooms pour ce tuto.

                                            J'ai un soucis pour lancer l'émulateur. Un message d'erreur m'indique que "Intel HAXM" est requis et que VT-x n'est pas activé dans le BIOS. Je ne suis vraiment pas fan d'aller bricoler dans le BIOS . J'utilise Bluestacks pour émuler certains jeux Android sur mon PC. Puis-je passer par lui pour tester mes applis créées sur Android Studio ? Et si oui, comment faire ?

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              16 avril 2018 à 14:08:19

                                              c'est ton pc qui ne support pas l'emulateur, soit le processeur soit ta carte graphique, il faudrait mieux exécuter ton code android sur un téléphone physique
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                11 mai 2018 à 13:52:45

                                                .

                                                -
                                                Edité par AymanNabaoui 11 mai 2018 à 14:36:43

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  24 mai 2018 à 17:16:22

                                                  Bonjour istzero

                                                  Je n'ai pas pu résoudre le problème et ceci m'a bloqué et découragé. J'ai laissé tomber ce cours. Il y a un autre cours Android sur Openclassroom, j'envisage de le suivre, mais n'ai pas le temps en ce moment

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    31 mai 2018 à 21:12:03

                                                    BONSOIR

                                                    Moi c'est Albert j'ai un problème quand je déclare la librairie recyclerview dans les dépendances

                                                    voici ce que j'ai ecrit implementation 'com.android.support.recyclerview-v7:26.0.0'


                                                    quand j'essaie de synchroniser ça me génère l'erreur ci-dessous

                                                    Attribute meta-data#android.support.VERSION@value value=(26.0.0-beta1) from [com.android.support:appcompat-v7:26.0.0-beta1] AndroidManifest.xml:28:13-41 is also present at [com.android.support:recyclerview-v7:26.0.0] AndroidManifest.xml:25:13-35 value=(26.0.0).
                                                    Suggestion: add 'tools:replace="android:value"' to <meta-data> element at AndroidManifest.xml:26:9-28:44 to override.

                                                    finalement je ne comprends plus rien besoin d'aide

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      13 juin 2018 à 17:18:08

                                                      Bonjour,

                                                      merci pour la réponse

                                                      Après l'installation d'Android studio, la case "SDK  n'est pas active et lors de configuration de sdk manager le logiciel ne la reconnait pas

                                                      que faire svp

                                                      Je suis sur windows 10- 64bits.

                                                      Merci d'avance et bonne soirée à tous

                                                      -
                                                      Edité par SamiraKoubali1 10 juillet 2018 à 21:42:46

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        14 juin 2018 à 15:32:44

                                                        SamiraKoubali1 a écrit:

                                                        Bonjour,

                                                        ce serait mieux de nous faire une capture d'ecran pour que nous puissons d'aider. pour la capture d'ecran tu peux utuliser le programme "snipe" deja installer sur ton windows.

                                                        Merci



                                                        -
                                                        Edité par Drogbut11 14 juin 2018 à 15:34:52

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          18 juin 2018 à 1:52:52

                                                          Slt moi c alvine je suis nouveau je cherche a apprendre la programmation avec mon android dc j'ai vraiment besoin d'aide

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            18 juin 2018 à 13:59:06

                                                            Ce serait mieux de nous dire a quel niveau exactemenbt as-tu besoin d'aide ?

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              23 juin 2018 à 15:21:54

                                                              SalomonBrys a écrit:

                                                              Regle d'or du developpement Android : Ne jamais stocker le contexte ! (A moins de savoir exactement ce que vous faites, ca cree des fuites memoire).

                                                              Creez plutot l'intent avec cette ligne :

                                                              Intent intent = new Intent(itemView.getContext(), MyWebView.class);



                                                              -
                                                              Edité par SalomonBrys 29 mars 2016 à 8:34:57

                                                              Bonjour. Je n'ai pas stocké le contexte et j'ai bien pensé à déclarer ma 2e activité LectureContenu dans le Manifest. Pourtant, mon code refuse d'être compilé. Voici mon code :

                                                              [code]

                                                              package com.lolocompany.newsreader;

                                                              import android.app.AlertDialog;
                                                              import android.content.Context;
                                                              import android.content.Intent;
                                                              import android.net.Uri;
                                                              import android.support.v4.app.ShareCompat;
                                                              import android.support.v4.content.ContextCompat;
                                                              import android.support.v7.app.AppCompatActivity;
                                                              import android.support.v7.widget.RecyclerView;
                                                              import android.util.Pair;
                                                              import android.view.LayoutInflater;
                                                              import android.view.View;
                                                              import android.view.ViewGroup;
                                                              import android.webkit.WebView;
                                                              import android.widget.TextView;
                                                              import android.widget.Toast;

                                                              import com.oc.rss.fake.FakeNews;
                                                              import com.oc.rss.fake.FakeNewsList;

                                                              import org.w3c.dom.Document;
                                                              import org.w3c.dom.Element;
                                                              import org.w3c.dom.NodeList;

                                                              import java.io.InputStream;
                                                              import java.util.ArrayList;
                                                              import java.util.List;

                                                              import javax.xml.parsers.DocumentBuilderFactory;

                                                              import static android.support.v4.content.ContextCompat.createDeviceProtectedStorageContext;
                                                              import static android.support.v4.content.ContextCompat.startActivity;

                                                              //REESSAYER APRES ABLATION DE ELLIPSIZE

                                                              public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

                                                              //FAKENEWSLIST ICI :
                                                              List<FakeNews> list= FakeNewsList.all;

                                                              @Override
                                                              public int getItemCount(){
                                                              return list.size();
                                                              }

                                                              @Override
                                                              public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
                                                              LayoutInflater inflater=LayoutInflater.from(parent.getContext());
                                                              View view=inflater.inflate(R.layout.liste_cellules, parent, false);
                                                              return new MyViewHolder(view);
                                                              }

                                                              @Override
                                                              public void onBindViewHolder(MyViewHolder holder, int position){
                                                              FakeNews pair=list.get(position);
                                                              holder.display(pair);

                                                              }

                                                              public class MyViewHolder extends RecyclerView.ViewHolder{


                                                              //TITLE ET HTMLCONTENT DE FAKENEWS ICI !!
                                                              String titre_string=FakeNews.class.toString();


                                                              private final TextView titre_article;
                                                              private final WebView contenu_article;

                                                              private FakeNews currentFakeNews;
                                                              //private Pair<FakeNews, FakeNews> currentPair;


                                                              private String currentTitreString;

                                                              public MyViewHolder(final View itemView){
                                                              super(itemView);

                                                              titre_article=(TextView) itemView.findViewById(R.id.titre_article);
                                                              contenu_article=(WebView) itemView.findViewById(R.id.contenu_article);


                                                              itemView.setOnClickListener(new View.OnClickListener() {
                                                              @Override
                                                              public void onClick(View view) {
                                                              Intent intent=new Intent(itemView.getContext(), LectureContenu.class);
                                                              startActivity(intent);

                                                              }
                                                              });




                                                              }




                                                              public void display(FakeNews pair){
                                                              currentFakeNews=pair;
                                                              titre_article.setText(pair.title);



                                                              }


                                                              }



                                                              }

                                                              [/code]

                                                              Merci beaucoup pour votre aide.

                                                              -
                                                              Edité par lolodestras 23 juin 2018 à 15:31:54

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              MOOC Android

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              • Editeur
                                                              • Markdown