web-dev-qa-db-fra.com

android.content.res.Resources $ NotFoundException: Impossible de trouver l'ID de la ressource 0xffffffff

Je déteste poster du code et demander pourquoi cela ne fonctionne pas, mais je suis perdu maintenant. J'ai essayé d'exécuter le cours suivant ci-dessous et une exception dans logcat que je ne peux pas expliquer, est une exception. Même une recherche sur Google donne peu de résultats. Peut-être que je ne comprends tout simplement pas l'écosystème, mais l'exception contient peu d'informations. L'exception que je reçois est ci-dessous:

03-06 21:50:43.031: E/AndroidRuntime(1013): FATAL EXCEPTION: main
03-06 21:50:43.031: E/AndroidRuntime(1013): Android.content.res.Resources$NotFoundException: Unable to find resource ID #0xffffffff
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.content.res.Resources.getResourceName(Resources.Java:1659)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.Java:903)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.Java:1088)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.support.v4.app.BackStackRecord.run(BackStackRecord.Java:682)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.Java:1444)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.Java:461)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.Java:141)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.support.v4.view.ViewPager.populate(ViewPager.Java:1012)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.support.v4.view.ViewPager.populate(ViewPager.Java:881)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.support.v4.view.ViewPager.onMeasure(ViewPager.Java:1366)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.View.measure(View.Java:15513)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:4827)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.widget.FrameLayout.onMeasure(FrameLayout.Java:310)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.View.measure(View.Java:15513)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.widget.LinearLayout.measureVertical(LinearLayout.Java:847)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.widget.LinearLayout.onMeasure(LinearLayout.Java:588)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.View.measure(View.Java:15513)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.ViewGroup.measureChildWithMargins(ViewGroup.Java:4827)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.widget.FrameLayout.onMeasure(FrameLayout.Java:310)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at com.Android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.Java:2176)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.View.measure(View.Java:15513)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.ViewRootImpl.performMeasure(ViewRootImpl.Java:1874)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.Java:1089)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.ViewRootImpl.performTraversals(ViewRootImpl.Java:1265)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.ViewRootImpl.doTraversal(ViewRootImpl.Java:989)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.Java:4351)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.Choreographer$CallbackRecord.run(Choreographer.Java:749)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.Choreographer.doCallbacks(Choreographer.Java:562)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.Choreographer.doFrame(Choreographer.Java:532)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.Java:735)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.os.Handler.handleCallback(Handler.Java:725)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.os.Handler.dispatchMessage(Handler.Java:92)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.os.Looper.loop(Looper.Java:137)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Android.app.ActivityThread.main(ActivityThread.Java:5039)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Java.lang.reflect.Method.invokeNative(Native Method)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at Java.lang.reflect.Method.invoke(Method.Java:511)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:793)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:560)
03-06 21:50:43.031: E/AndroidRuntime(1013):     at dalvik.system.NativeStart.main(Native Method)
03-06 21:55:44.231: E/Trace(1033): error opening trace file: No such file or directory (2)

J'ai essayé de déplacer ViewPager vers le contenu de niveau supérieur (par exemple, setContent (pager)), mais cela ne semblait pas fonctionner. Toute entrée est la bienvenue. Le code est ci-dessous:

EDIT * J'ai simplifié l'exemple, et j'ai toujours le même problème.

import Android.os.Bundle;
import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentActivity;
import Android.support.v4.app.FragmentPagerAdapter;
import Android.support.v4.view.ViewPager;
import Android.view.Gravity;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;
import Android.view.ViewGroup.LayoutParams;
import Android.widget.LinearLayout;
import Android.widget.TextView;

public class AskQuestionActivity extends FragmentActivity
{
    private static LayoutParams MATCH_PARENT = new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT );

    @Override
    protected void onCreate( Bundle savedInstanceState )
    {
        super.onCreate( savedInstanceState );

        ViewPager pager = new ViewPager( this );
        pager.setAdapter( new FragmentPagerAdapter( getSupportFragmentManager() )
        {
            @Override
            public int getCount()
            {
                return 1;
            }

            @Override
            public Fragment getItem( int arg0 )
            {
                return new BoardFragment();
            }
        } );

        setContentView( pager );
    }

    public static class BoardFragment extends Fragment
    {
        @Override
        public View onCreateView( LayoutInflater inflater,
                                  ViewGroup container,
                                  Bundle savedInstanceState )
        {
            TextView textView = new TextView( getActivity() );
            textView.setText( "Board" );
            textView.setGravity( Gravity.CENTER );

            LinearLayout layout = new LinearLayout( getActivity() );
            layout.setLayoutParams( MATCH_PARENT );
            layout.addView( textView );

            return layout;
        }
    }
}

Toute aide est la bienvenue.

61
Vijay Sharma

Je vais donc poster ce que je pense est la solution à mon problème. Après avoir ajouté une seule ligne à mon code ci-dessus, donnant à la ViewPager un ID "aléatoire"; il a réussi à résoudre mon problème.

Au début, j’étais convaincu que définir votre propre pièce d’identité était une mauvaise pratique, mais il existe apparemment des moyens légitimes de le faire. À savoir en créant un fichier ids.xml et en laissant l'écosystème Android générer un identifiant pour vous. Je vous recommande de vérifier ces SO messages pour plus d'informations - ici et ici .

Sinon, je recommanderais simplement de créer un fichier XML pour votre mise en page et d’obtenir ViewPager dans votre Activity (au lieu de l’instancier par programme), mais tout dépend en définitive de ce que vous essayez d’accomplir.

83
Vijay Sharma
ViewPager pager = new ViewPager(this);

besoin d'un identifiant de ressource défini

pager.setId(0x1000);
21
ShuweiTemp

J'avais un problème similaire avec les fichiers de présentation XML situés dans le dossier de présentation. Le code fonctionnait auparavant dans Eclipse, mais lorsque le projet a été déplacé vers Android Studio, j'ai continué à obtenir le fichier Android.content.res.Resources $ NotFoundException.

Pour résoudre le problème, j'ai finalement renommé les fichiers XML à l'origine du problème, ce qui a résolu le problème. Avant cela, j’essayais de reconstruire le projet, d’apporter des modifications au fichier XML, mais cela ne fonctionnait pas.

1
Kelvin R. Santiago

Exactement le même problème ... J'ai créé par programme un viewpager dans un fragment. quand le fragment est revenu au premier plan, il s'est écrasé.

Même si, j'ai déjà généré un identifiant aléatoire pour le pager de vue, il se bloque toujours. Le seul moyen est d’y affecter un identifiant fixe. Bizarre!

1
NCHEN

Je reçois la même exception lorsque je configure l'adaptateur viewPager.setAdapter(adapter);, uniquement dans Android KitKat 4.4. J'essaie presque toutes les solutions mais ne fonctionne pas.

Dans mon cas, la soluation était lorsque je déplaçais le dossier .xml file drawable-nodpi vers drawable (qui contenait des images SVG), et Build -> Clean Project, puis l’erreur disparue. 

0
Md Imran Choudhury

J'ai eu le même problème. Le problème était le fichier de disposition manquant. J'avais mis la mise en page dans le dossier layout-xlarge mais pas dans le dossier layout. Si petite tablette d'écran avait ce problème. Cela pourrait donner un indice à certaines personnes.

0
Alpaslan

J'ai eu la même erreur. Le mien a été causé par le fait que ma classe Adapter avait un textView supplémentaire qui n'avait pas d'imageView correspondant. J'ai eu 7 TextViews et seulement 6 ImageViews. Il m'a fallu quelques heures pour comprendre une simple erreur. 

0
luckyreed76