I hate posting code, and asking why it doesn't work, but I'm at a loss right now. I've tried to run the following class below, and I get an exception in logcat which I can't explain. Even a google search yields little results. Maybe I just don't understand the ecosystem, but the exception has little information. The exception I'm getting is below:
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)
I tried moving the ViewPager to the top level content (i.e. setContent( pager )) but that didn't seem to work. Any input is welcomed. The code is below:
EDIT* I Simplified the example, and I still get the same problem.
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; } } }
Any help is welcomed.
So I'll post what I think is the solution to my problem. After adding a single line to my above code giving the ViewPager
a "random" ID; it managed to fix my problem.
At first I was convinced that setting your own ID is bad practice, but apparently there are legitimate ways of doing this. Namely by creating an ids.xml file and letting the Android ecosystem generate an ID for you. I recommend checking out these SO posts for more information - here and here.
Otherwise, I would recommend just creating an XML file for your layout and getting the ViewPager
in your Activity
(instead of programmatically instantiating it), but ultimately it all depends on what you're trying to accomplish.
ViewPager pager = new ViewPager(this);
need set resource id
pager.setId(0x1000);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With