3

I try to make something like this:

public static ArrayList<View> rootView = new ArrayList<View>();

But when i try to add view to it I just get a null pointer exception which makes me wonder if i do something wrong or if it just isn't possible to do this?

Thanks.

Code :

 ArrayList<View> rootView = new ArrayList<View>();
View v=inflater.inflate(R.layout.activity_main, null);
rootView.add(v);

The rootView.add(v); just makes a null pointer exception

Logcat added:

  03-19 20:49:35.543: E/AndroidRuntime(8755): FATAL EXCEPTION: main
03-19 20:49:35.543: E/AndroidRuntime(8755): java.lang.NullPointerException
03-19 20:49:35.543: E/AndroidRuntime(8755):     at code94.message.TestFragment.onCreateView(TestFragment.java:113)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.support.v4.view.ViewPager.populate(ViewPager.java:1011)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.support.v4.view.ViewPager.populate(ViewPager.java:880)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1374)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.View.measure(View.java:15517)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:681)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.View.measure(View.java:15517)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.View.measure(View.java:15517)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:847)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.View.measure(View.java:15517)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4825)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2313)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.View.measure(View.java:15517)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1874)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1089)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1265)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.Choreographer.doCallbacks(Choreographer.java:562)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.Choreographer.doFrame(Choreographer.java:532)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.os.Handler.handleCallback(Handler.java:725)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.os.Handler.dispatchMessage(Handler.java:92)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.os.Looper.loop(Looper.java:137)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at android.app.ActivityThread.main(ActivityThread.java:5228)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at java.lang.reflect.Method.invokeNative(Native Method)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at java.lang.reflect.Method.invoke(Method.java:511)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
03-19 20:49:35.543: E/AndroidRuntime(8755):     at dalvik.system.NativeStart.main(Native Method)
9
  • 1
    You haven't actually shown us the code where you add the Views. Commented Mar 19, 2013 at 19:36
  • 1
    Can you provide code where you add the views? Commented Mar 19, 2013 at 19:37
  • @JoakimE why not ? you can add the views in this way Commented Mar 19, 2013 at 19:41
  • 1
    @JoakimE If the view is not Null, then you add it, without any doubt.. Commented Mar 19, 2013 at 19:44
  • 1
    can You add where is instanciate inflater? Commented Mar 19, 2013 at 19:44

3 Answers 3

1

Your code is valid, you can definitely create an ArrayList<View>, and you can also inflate your layout like this. So your problem is somewhere else.

You should check which object is null: v or inflater. In the first case, something is wrong maybe with your layout or with the inflation method. If the second case, your instantiation of inflater is wrong or missing.

Sign up to request clarification or add additional context in comments.

Comments

1

You can add views in array list

ArrayList<View> viewsList =new ArrayList<>();
// adding views to array list
viewsList.add(view1);
viewList.add(view2);

You can get views from ArrayList like below

viewsList.get(0);  //to get view at first position
viewsList.get(1);  //to get view at second position

Keep coding :)

1 Comment

What if you want to use a for loop to add the views: for (int i=0;i<10;i++) {
0

You can try this code

View child = getLayoutInflater().inflate(R.layout.child);
rootView.add(child);

2 Comments

You ought to explain why you believe this will work, also double check your syntax inflate() requires atleast two parameters.
this code dont change anything, the view child get a value, then when .add java.lang.NullPointerException

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.