Android.content.res.Resources $NotFoundException: Не удается найти идентификатор ресурса # 0xffffffff

Я ненавижу почтовый код и спрашиваю, почему он не работает, но я сейчас в недоумении. Я попытался запустить следующий класс ниже, и я получаю исключение в logcat, который я не могу объяснить. Даже поиск в google дает мало результатов. Возможно, я просто не понимаю экосистему, но исключение имеет мало информации. Исключением, которое я получаю, является ниже:

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)

Я попытался переместить ViewPager на контент верхнего уровня (т.е. setContent (пейджер)), но это, похоже, не работает. Любой вход приветствуется. Код ниже:

РЕДАКТИРОВАТЬ *. Я упростил этот пример, и у меня по-прежнему возникает та же проблема.

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;
        }
    }
}

Любая помощь приветствуется.

Ответ 1

Итак, я опубликую то, что, по моему мнению, является решением моей проблемы. После добавления одной строки к моему приведенному выше коду, указав ViewPager "случайный" идентификатор; мне удалось исправить мою проблему.

Сначала я убедился, что установка собственного идентификатора - это плохая практика, но, видимо, есть законные способы сделать это. А именно, создав файл ids.xml и позволяя экосистеме Android генерировать идентификатор для вас. Я рекомендую проверить эти сообщения SO для получения дополнительной информации - здесь и здесь.

В противном случае я бы рекомендовал просто создать XML файл для вашего макета и получить ViewPager в вашем Activity (вместо его программной копии), но в конечном итоге все зависит от того, что вы пытаетесь выполнить.

Ответ 2

ViewPager pager = new ViewPager(this);

нужен идентификатор ресурса

pager.setId(0x1000);

Ответ 3

У меня была аналогичная проблема с файлами макета XML, которые находились в папке макета. Код, используемый для работы в eclipse, но когда проект был перенесен в Android Studio, я продолжал получать android.content.res.Resources $NotFoundException.

Чтобы устранить проблему, я переименовал файлы XML, которые вызывали проблему, и это решило проблему. До этого я попытался перестроить проект, внеся изменения в файл XML, но ничего из этого не удалось.

Ответ 4

Точно такая же проблема. Я программно сгенерировал viewpager во фрагменте. когда фрагмент вернулся на передний план, он разбился.

Несмотря на то, что я уже создал случайный идентификатор для пейджера представления, он все еще разбивается. Единственный способ - назначить ему фиксированный идентификатор. Weird!

Ответ 5

У меня была такая же ошибка. Мой был вызван моим классом адаптера, имеющим один дополнительный textView, у которого не было соответствующего изображения. У меня было 7 TextViews и только 6 ImageViews. Мне потребовалось пару часов, чтобы понять простую ошибку.

Ответ 6

У меня была такая же проблема. Проблема заключалась в отсутствии файла макета. Я поместил макет в папку layout-xlarge, но не в папку макета. Такой маленький экранный планшет имел эту проблему. Это может дать некоторым людям ключ.

Ответ 7

Я получаю такое же исключение, когда я устанавливаю адаптер viewPager.setAdapter(adapter);, только в Android KitKat 4.4. Я стараюсь почти все решения, но не работаю.

В моем случае уклонение было тогда, когда я перемещал .xml файл drawable-nodpi в папку drawable (это были некоторые изображения SVG), и Build -> Clean Project, тогда ошибка исчезла.