我讨厌发布代码,并问为什么它不起作用,但我现在不知所措。我试过在下面运行下面的类,我在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;
}
}
}
欢迎任何帮助。
答案 0 :(得分:83)
所以我会发布我认为解决问题的方法。在我的上述代码中添加一行后,ViewPager
为“随机”ID;它设法解决了我的问题。
起初我确信设置自己的ID是不好的做法,但显然有合法的方法可以做到这一点。即通过创建 ids.xml 文件并让Android生态系统为您生成ID。我建议您查看这些SO帖子以获取更多信息 - here和here。
否则,我建议您只为您的布局创建一个XML文件,并在ViewPager
中获取Activity
(而不是以编程方式实例化它),但最终这取决于您尝试的是什么完成。
答案 1 :(得分:22)
ViewPager pager = new ViewPager(this);
需要设置资源ID
pager.setId(0x1000);
答案 2 :(得分:1)
我遇到了布局文件夹下的XML布局文件的类似问题。用于在eclipse中工作的代码,但是当项目移动到Android Studio时,我一直得到android.content.res.Resources $ NotFoundException。
要解决此问题,我最终重命名导致问题的XML文件并解决了问题。在此之前,我尝试重建项目,修改XML文件,但没有一个工作。
答案 3 :(得分:1)
完全相同的问题。 我以编程方式在片段中生成了一个viewpager。当碎片回到前景时它会崩溃。
即使我已经为视图寻呼机生成了一个随机ID,它仍然会崩溃。唯一的方法是为它分配一个固定的Id。怪异!
答案 4 :(得分:1)
现在在 2021 年,这个问题在我的 Xamarin Forms 中遇到了我,我的 AppShell 运行良好,但在升级到许多 Google AndroidX Nuget 包的最新版本后,当打开菜单时,此帖子的消息错误开始崩溃切换到另一个页面。我的解决方案:我将所有库一个一个降级到以前的版本,罪魁祸首似乎是 Xamarin.AndroidX.Legacy.Support.V4。 v1.0.0.6 是最后一个对我来说没有问题的版本。我不知道原因。
答案 5 :(得分:0)
我有同样的错误。我的适配器类有一个额外的textView没有匹配的imageView。我有7个TextViews,只有6个ImageViews。我花了几个小时才发现一个简单的错误。
答案 6 :(得分:0)
我有同样的问题。问题是缺少布局文件。我已将布局放在layout-xlarge文件夹中,但布局文件夹中没有。所以小屏幕平板电脑有这个问题。这可能会给一些人一个线索。
答案 7 :(得分:0)
我在设置适配器{
"coefficients": [
-0.2633608588194104,
0.22152319227842276
],
"intercept": 2.6380946151040012,
"prediction": 5.718979487634966,
"quantiles": [
1.1603238947151593,
4.995456010274735
],
"scale": 1.5472345574364683
}
时遇到相同的异常,仅在Android KitKat 4.4中。我尝试了几乎所有的解决方案,但没有工作。
在我的情况下,解决方案是我将 .xml 文件 drawable-nodpi 移动到 drawable 文件夹(这是一些SVG图像),然后u1 viewed i1 on 18 June 2017
u1 purchased i1 on 20 June 2017
u1 purchased i2 on 23 June 2017
u1 purchased i3 on 30 June 2017
u2 viewed i1 on 10 Mar 2017
u2 purchased i1 on 11 Mar 2017
...
然后错误就消失了。
答案 8 :(得分:0)
我试图将Int
的值直接设置为TextView
。
通过在将值设置为String
之前将值转换为TextView
来解决。