77 votes

Android.content.res.Resources$NotFoundException : Impossible de trouver la ressource ID #0xffffffffff

Je déteste poster du code et demander pourquoi ça ne marche pas, mais je ne sais pas quoi faire pour l'instant. J'ai essayé d'exécuter la classe ci-dessous, et j'obtiens une exception dans logcat que je ne peux pas expliquer. Même une recherche sur Google donne peu de résultats. Peut-être que je ne comprends pas l'écosystème, mais l'exception contient peu d'informations. L'exception que je reçois est la suivante :

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 le ViewPager vers le contenu de niveau supérieur (c'est-à-dire setContent( pager )) mais cela ne semble pas fonctionner. Toute contribution 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.

0 votes

Je ne pense pas que le problème soit dans le code que vous avez montré. Avez-vous des fichiers de mise en page XML que vous utilisez ?

0 votes

Non, pas dans ce cas. Sauf si mon manifeste s'avère utile (je sais, je debe Je vais probablement mettre mes mises en page en XML, mais je m'amuse juste avec quelques trucs). Pendant une seconde, j'ai pensé que c'était peut-être parce que je n'avais pas donné de taille à mon viewpager en appelant pager.setLayoutParam( params ) ; mais cela n'a pas fait l'affaire non plus.

1 votes

Quelque chose est traité comme une ressource alors qu'il devrait être traité comme une couleur. La chose que je vois, cependant, est que vous n'avez pas de ressources référencées dans ce code. (Je pense, quelque part, 0xFFFFFFFF est utilisé à la place de android.R.color.white ou similaire). La raison pour laquelle j'ai suggéré XML est que la trace de la pile ne renvoie pas à votre code, mais elle peut provenir d'une auto-inflation de fragment ou autre.

86voto

Vijay Sharma Points 531

Je vais donc poster ce que je pense être la solution à mon problème. Après avoir ajouté une seule ligne à mon code ci-dessus en donnant à l'option ViewPager un ID "aléatoire" ; cela a permis de régler mon problème.

Au début, j'étais convaincu que définir son propre identifiant était une mauvaise pratique, mais apparemment, il existe des moyens légitimes de le faire. Notamment en créant un ids.xml et laisser l'écosystème Android générer un identifiant pour vous. Je vous recommande de consulter ces articles de l'OS pour plus d'informations. aquí y aquí .

Sinon, je vous recommande de créer un fichier XML pour votre mise en page et d'obtenir l'attribut ViewPager dans votre Activity (au lieu de l'instancier de manière programmatique), mais en fin de compte, tout dépend de ce que vous essayez d'accomplir.

0 votes

Le problème a été résolu pour moi aussi

5 votes

Merci. Je n'aurais jamais deviné que l'identification était la raison !

0 votes

Brillant. J'ai trouvé la solution, moi aussi.

22voto

ShuweiTemp Points 119
ViewPager pager = new ViewPager(this);

besoin de définir l'identifiant de la ressource

pager.setId(0x1000);

2voto

Forozco Points 31

Maintenant, en 2021, ce problème m'a frappé dans mon Xamarin Forms avec un AppShell qui fonctionnait parfaitement, mais après la mise à niveau vers la dernière version de nombreux Google AndroidX Nuget Packages a commencé à se planter avec le message d'erreur de ce post lorsque le menu ouvert pour passer à une autre page. La solution dans mon cas : J'ai rétrogradé à la version précédente toutes les bibliothèques une par une et le coupable semble être le programme Xamarin.AndroidX.Legacy.Support.V4 . La v1.0.0.6 est la dernière qui a fonctionné sans problème pour moi. Je n'en connais pas la raison.

1voto

NCHEN Points 11

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

Bien que j'aie déjà généré un identifiant aléatoire pour le pageur de vue, il se plante toujours. Le seul moyen est de lui attribuer un Id fixe. C'est bizarre !

1voto

J'avais un problème similaire avec les fichiers de mise en page XML qui se trouvaient dans le dossier de mise en page. Le code fonctionnait dans Eclipse, mais lorsque le projet a été transféré dans Android Studio, j'ai obtenu le message Android.content.res.Resources$NotFoundException.

Pour résoudre le problème, j'ai fini par renommer les fichiers XML qui causaient le problème et cela a résolu le problème. Avant cela, j'ai essayé de reconstruire le projet et de modifier le fichier XML, mais rien n'a fonctionné.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X