IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

OnActivityResult never called - l'ultime retour (j'espère)


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut OnActivityResult never called - l'ultime retour (j'espère)
    Bonjour à tous,

    je sais que les problèmes lié au non appel de OnActivityResult sont légions et j'ai déjà parcouru un bon paquet de réponse lié à ce problème, et pourtant, je n'ai toujours pas résolu le mien

    Pas du tout spécialisé dans le développement Android, je m’intéresse et je teste.
    Ainsi, j'ai fait une application avec une Navigation Drawer Activity. Sous Android Studio avec le menu contextuel New -> Activity -> Navigation Drawer Activity
    Mon Navigation Activity a 3 items dans son menu et donc 3 fragments qui s'y insère.

    Dans ma navigation activity lorsqu'un fragment est chargé, il y a egalement une Action Bar, et lorsque je clique sur l'action ajouté, je démarre une seconde activité qui doit me retourner une réponse


    Extract de NavigationActivity
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
         
            if (id == R.id.other_activity) {
                startActivityForResult(new Intent(this, OtherActivity.class), RESULT_OK );
                overridePendingTransition(R.anim.slide_in_from_left, R.anim.slide_out_to_left);
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }

    Dans ma seconde activité, j'effectue mes actions et je souhaite retourner un objet (class JAVA). En fait retourner l'objet sélectionné dans une liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    public class OtherActivity extends Activity {
    
        private RadListView _listView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.other_activity);
    
            MyDatabaseHandler db = new MyDatabaseHandler(this);
            if ( db.getMyObjCount()> 0 ) {
    
                _listView = (RadListView) findViewById(R.id.listView);
                final MyAdapter myViewAdapter = new MyAdapter(db.getAllMyObjs());
                _listView.setAdapter(myViewAdapter);
    
                _listView.addItemClickListener( new RadListView.ItemClickListener() {
                    @Override
                    public void onItemClick(int itemPosition, MotionEvent motionEvent) {
                        MyObj obj = (MyObj)myViewAdapter.getItem( itemPosition );
                       
                        Intent intent = new Intent();
                        intent.putExtra("selected_item",obj);
                        setResult(RESULT_OK, intent);
                        finish();
                    }
    
                    @Override
                    public void onItemLongClick(int itemPosition, MotionEvent motionEvent) {
    
                    }
                });
    
            }
            else
            {
                startActivity( new Intent( this, ThirdActivity.class));
            }
        }
    
        @Override
        public void onBackPressed() {  // Juste pour test, n'appelle pas plus le onActivityResult
            Intent data = new Intent();
            data.putExtra("key", new MyObj( "toto", 5, 12, "titi") );
            setResult(RESULT_OK, data);
            finish();
            super.onBackPressed();
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int id = item.getItemId();
    
           if ( id == R.id.home ) { // Never called, how how is identified the up button of action bar ?!?
                Intent data = new Intent();
                data.putExtra("key", new MyObj( "toto", 5, 12, "titi") );
                setResult(RESULT_OK, data);
                finish();
            }
    
            return super.onOptionsItemSelected(item);
        }
    }


    Ce cas semble très simple, on passe de l'activité Navigation a une seconde activité et on revient avec un résultat. Malheureusement, onActivityResult n'est jamais appelé dans l'activité navigation (pas d’arrêt sur le breakpoint) et je ne comprend pas pourquoi !!?? Dans ce schéma, cela ne semble rien a voir avec les fragments, mais juste une discussion d'activité à activité.

    Comme je suis dans les choux, merci pour votre aide.

  2. #2
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    C'est plutôt onActivityResult() dans NavigationActivity que tu aurais dû nous montrer.

    PS : la classe MyObj implèmente bien Parcelable ?
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut
    OnActivityResult contient simplement un Toaster et un breakpoint sur cette ligne.
    Le toaster n'est jamais appelé, mais si ca aide a repondre au problème:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     
           Toast.makeText(this, "onactivityresult called", Toast.LENGTH_SHORT).show(); // Avec un point d’arrêt sur cette ligne
     
     
            super.onActivityResult(requestCode, resultCode, data);
        }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut
    Citation Envoyé par Hephaistos007 Voir le message

    PS : la classe MyObj implèmente bien Parcelable ?
    Absolument,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class MyObj implements Parcelable {
     [...]
    }

  5. #5
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Bizarre. Et il y a quoi dans ton manifeste à tout hasard ?
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut
    OtherActivity est ManagePetsActivity

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.iotware.pets" >
    
        <uses-sdk android:minSdkVersion="19" />
    
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
        <!--
     The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
             Google Maps Android API v2, but are recommended.
        -->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name=".NavigationActivity"
                android:label="@string/title_activity_navigation" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
           
           <meta-data
                android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version" />
            <meta-data
                android:name="com.google.android.maps.v2.API_KEY"
                android:value="@string/google_maps_key" />
    
            <activity
                android:name=".SettingsActivity"
                android:label="@string/title_activity_settings"
                android:parentActivityName=".NavigationActivity" >
                <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value="com.iotware.pets.NavigationActivity" />
            </activity>
            <activity
                android:name=".AddPetActivity"
                android:label="@string/title_activity_add_dog"
                android:parentActivityName=".ManagePetsActivity" >
                <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value="com.iotware.pets.ManagePetsActivity" />
            </activity>
            <activity
                android:name=".ManagePetsActivity"
                android:label="@string/title_activity_manage_pets"
                android:parentActivityName=".NavigationActivity" >
                <meta-data
                    android:name="android.support.PARENT_ACTIVITY"
                    android:value="com.iotware.pets.NavigationActivity" />
            </activity>
            <activity
                android:name=".StatActivity"
                android:label="@string/title_activity_stat" >
            </activity>
        </application>
    
    </manifest>

  7. #7
    Membre Expert
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Par défaut
    Je pense à un autre truc : quelle est la valeur de RESULT_OK ? elle doit être impérativement positive
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/12/2010, 02h13
  2. Réponses: 0
    Dernier message: 23/12/2010, 06h13
  3. Réponses: 4
    Dernier message: 05/03/2010, 10h13
  4. Pb retour methode call.invoke
    Par tigerpob79 dans le forum Services Web
    Réponses: 2
    Dernier message: 06/11/2008, 18h21
  5. Réponses: 1
    Dernier message: 15/05/2007, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo