Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Andoird] Soucis 1er activité du MOOC Android

Sujet résolu
    11 août 2016 à 14:31:20

    Bonjour à tous,

    Pour la 1er activité du MOOC sur Android il faut un RecyclerView des titres de fausse news et quand on clic sur un titre on accède à la page complète de la news

    Je suis bloqué au moment où je dois cliquer sur un titre et accéder à une activité
    Pour le moment je veux me contenter d'accéder à une autre activité, le passage de paramètre viendra plus tard

    Je me suis basé sur le cours et sur des bouts de code sur le forum où les gens disent ça fonctionne (et je les crois car cela me semble juste à mois aussi)

    Voici le code entier de l'adapter du recyclerView

    package com.example.fgerard.ocr_rss_activite1;
    
        import android.app.Activity;
        import android.app.AlertDialog;
        import android.content.Intent;
        import android.support.v7.widget.RecyclerView;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.TextView;
        // les imports du .JAR
        import com.oc.rss.fake.FakeNews;
        import com.oc.rss.fake.FakeNewsList;
        // les imports Java
        import java.util.List;
    
    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
    
        private final 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.list_cell, parent, false);
            return new MyViewHolder(view);
        }
    
        @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {
            FakeNews fk = list.get(position);
            holder.display(fk);
        }
    
        public class MyViewHolder extends RecyclerView.ViewHolder {
    
            private final TextView newsTitel;
            private FakeNews currentNews;
            private Activity activity;
    
            public MyViewHolder(final View itemView) {
                super(itemView);
                newsTitel = ((TextView) itemView.findViewById(R.id.newsTitel));
                // l'action de cliquer sur le titre
                itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent intent = new Intent(itemView.getContext(), MyWebViewActivity.class);
                        activity.startActivity(intent);
                    }
                });
            }
    
            public void display(FakeNews fk) {
                currentNews = fk;
                newsTitel.setText(fk.title);
            }
        }
    
    }

    Le soucis (quand je me base sur le TP lancé les dès) c'est que ne je peux pas exetends Activity vue qu'on extends déjà autre chose

    une solution que j'ai vue est de juste faire un private Activity activity

    le code en soit ne rougit pas, mais bien sur faut pas se fier à ca, quand je lance l'application et que je clic sur un titre, ça plante et puis c'est tout

    Voici le logcat:

    11 12:19:11.468 15363-15363/com.example.fgerard.ocr_rss_activite1 D/AndroidRuntime: Shutting down VM
    08-11 12:19:11.469 15363-15363/com.example.fgerard.ocr_rss_activite1 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                           Process: com.example.fgerard.ocr_rss_activite1, PID: 15363
                                                                                           java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object reference
                                                                                               at android.app.Activity.startActivityForResult(Activity.java:3745)
                                                                                               at android.app.Activity.startActivityForResult(Activity.java:3706)
                                                                                               at android.app.Activity.startActivity(Activity.java:4016)
                                                                                               at android.app.Activity.startActivity(Activity.java:3984)
                                                                                               at com.example.fgerard.ocr_rss_activite1.MyAdapter$MyViewHolder$1.onClick(MyAdapter.java:54)
                                                                                               at android.view.View.performClick(View.java:4780)
                                                                                               at android.view.View$PerformClick.run(View.java:19866)
                                                                                               at android.os.Handler.handleCallback(Handler.java:739)
                                                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                               at android.os.Looper.loop(Looper.java:135)
                                                                                               at android.app.ActivityThread.main(ActivityThread.java:5257)
                                                                                               at java.lang.reflect.Method.invoke(Native Method)
                                                                                               at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

    De mon coté je continue mes recherches (trois heures que je suis bloqué sur ça hors que je suis sur que c'est une connerie xD)

    Merci d'avance a ceux qui m'aideront ;-)

    • Partager sur Facebook
    • Partager sur Twitter
      11 août 2016 à 14:35:56

      Salut,

      Sur la ligne :

      activity.startActivity(intent);
      

      J'ai l'impression que ta variable activity est null. En effet, je ne vois nulle part ton code une affectation de cette variable.

      • Partager sur Facebook
      • Partager sur Twitter
        11 août 2016 à 14:37:05

        Je me dit aussi, mais mon soucis est que je vois pas en quoi l'affecter

        juste faire un activity = new Activity(); ? j'ai essayé et cela ne change pas

        j'ai testé ensuite plusieurs setter dessus mais rien ne change

        -
        Edité par kingdomflo 11 août 2016 à 14:42:39

        • Partager sur Facebook
        • Partager sur Twitter
          11 août 2016 à 14:49:12

          Pas vraiment non :)

          Il faut que tu lui affectes la valeur de l'activité qui porte ta liste. Il faut donc que tu fasses transiter une référence de ton activité à ton adapter puis à ton ViewHolder.

          • Partager sur Facebook
          • Partager sur Twitter
            11 août 2016 à 14:57:58

            rolandl a écrit:

            Il faut que tu lui affectes la valeur de l'activité qui porte ta liste.


            l'activité qui porte ma liste? MainActivity donc vue que c'est sur MainActivity que ma liste s'affiche? je t'avoue ne pas savoir te suivre

            edit:

            problème résolu (pour le moment :p)

            merci, tu m'as bien guidé (et moi j'étais parti tellement loin...)

            par contre je me permet de pas encore mettre le sujet en tant que résolu car j'aurais peut être des soucis plus tard xD

            je mettrais en résolu une fois l'activité réalisé ^^"

            -
            Edité par kingdomflo 11 août 2016 à 15:08:44

            • Partager sur Facebook
            • Partager sur Twitter

            [Andoird] Soucis 1er activité du MOOC Android

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown