75

我讨厌发布代码,并问为什么它不起作用,但我现在不知所措。我尝试在下面运行以下类,但我在 logcat 中遇到了一个我无法解释的异常。即使是谷歌搜索也很少产生结果。也许我只是不了解生态系统,但异常信息很少。我得到的例外如下:

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(pager)),但这似乎不起作用。欢迎任何意见。代码如下:

编辑*我简化了示例,但我仍然遇到同样的问题。

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

欢迎任何帮助。

4

10 回答 10

86

所以我会发布我认为解决我问题的方法。在我上面的代码中添加一行后,给出ViewPager一个“随机”ID;它设法解决了我的问题。

起初我确信设置自己的 ID 是不好的做法,但显然有合法的方法可以做到这一点。即通过创建一个ids.xml文件并让 Android 生态系统为您生成一个 ID。我建议查看这些 SO 帖子以获取更多信息 -此处此处

否则,我建议只为您的布局创建一个 XML 文件并将其ViewPager放入您的Activity(而不是以编程方式实例化它),但最终这一切都取决于您要完成的工作。

于 2013-03-07T15:09:41.927 回答
22
ViewPager pager = new ViewPager(this);

需要设置资源id

pager.setId(0x1000);
于 2013-07-17T07:58:48.593 回答
1

我在布局文件夹下的 XML 布局文件中遇到了类似的问题。该代码曾经在 Eclipse 中工作,但是当项目转移到 Android Studio 时,我不断收到 android.content.res.Resources$NotFoundException。

为了解决这个问题,我最终重命名了导致问题并解决了问题的 XML 文件。在此之前,我尝试重建项目,对 XML 文件进行修改,但都没有奏效。

于 2013-09-10T11:29:27.303 回答
1

现在在 2021 年,这个问题在我的 Xamarin Forms 中遇到了我,其 AppShell 运行良好,但是在升级到许多 Google AndroidX Nuget Packages 的最后一个版本后,当打开菜单更改为另一个时,开始崩溃并出现此帖子的消息错误页。我的解决方案:我将所有库一个一个降级到以前的版本,罪魁祸首似乎是Xamarin.AndroidX.Legacy.Support.V4。v1.0.0.6 是最后一个对我来说没有问题的版本。我不知道原因。

于 2021-06-04T04:32:01.490 回答
1

完全相同的问题。我以编程方式在片段中生成了一个 viewpager。当片段回到前台时它崩溃了。

即使,我已经为视图寻呼机生成了一个随机 ID,但它仍然会崩溃。唯一的方法是为其分配一个固定的 Id。诡异的!

于 2015-11-25T01:01:00.960 回答
0

我有同样的错误。我的原因是我的 Adapter 类有一个额外的 textView 没有匹配的 imageView。我有 7 个 TextView,只有 6 个 ImageView。我花了几个小时才弄清楚一个简单的错误。

于 2014-02-06T18:09:12.490 回答
0

我在设置 adapter 时遇到了同样的异常viewPager.setAdapter(adapter);,仅在 Android KitKat 4.4 中。我尝试了几乎所有的解决方案,但没有奏效。

就我而言,解决方案是当我将.xml文件drawable-nodpi移动到可绘制文件夹(这是一些 SVG 图像),Build -> Clean Project然后错误消失了。

于 2017-07-20T06:28:31.370 回答
0

我遇到过同样的问题。问题是缺少布局文件。我已将布局放在 layout-xlarge 文件夹中,但没有放在布局文件夹中。所以小屏幕平板电脑就有这个问题。这可能会给一些人一个线索。

于 2015-07-21T06:14:57.257 回答
0

我知道这是一个老问题,但也许我找到的解决方案可以帮助任何有类似问题的人......

我收到的错误消息是神秘的 'Android.Content.Res.Resources+NotFoundException: 'Unable to find resource ID #0x0' - 只有 'resource ID' 与原始问题不同。

经过大量研究,我终于发现崩溃与对 PushModalAsync() 的调用有关,尽管我不知道为什么......

最终为我解决了这个问题的解决方案可以在 styles.xml 文件中找到。我已经为 android:windowBackground 分配了 #00ffffff 的值。事实证明,任何十六进制颜色<item name="android:windowBackground">#000000</item>都会抛出这个异常。

解决方法是在colors.xml文件中指定十六进制颜色,然后在styles.xml中引用这个颜色,比如<item name="android:windowBackground">@color/window_background</item>

这是让我走上正轨的“错误”报告...当 android:windowBackground 设置为 HEX 时,PushModalAsync() 上引发异常

于 2021-12-30T05:47:31.227 回答
0

我试图直接设置一个IntTextView

String通过在将其设置为 之前将值转换为 来解决TextView

于 2020-05-04T07:29:25.010 回答