Reputation: 307
I'm trying to use jfeinstein10 SlidingMenu in a fragment class.
public class ConversionFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.activity_conversion, container, false);
super.onCreate(savedInstanceState);
SlidingMenu menu = new SlidingMenu(BaseActivity.context);
menu.setMode(SlidingMenu.LEFT);
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
menu.attachToActivity((Activity) BaseActivity.context, SlidingMenu.SLIDING_WINDOW);
menu.setMenu(R.layout.list);
ListView lv = (ListView) rootView.findViewById(R.id.listView1);
String[] values = new String[] { "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten" };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(rootView.getContext().getApplicationContext(),
android.R.layout.simple_list_item_1, android.R.id.text1, values);
lv.setAdapter(adapter);
return rootView;
}
}
and my list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
I'm getting a null point exception at lv.setAdapter(adapter);
What can be the cause of this?
Is this even the proper way to use jfeinstein10 SlidingMenu?
04-18 19:15:36.345: D/myapp(19089): java.lang.Exception
04-18 19:15:36.345: D/myapp(19089): at com.example.app1.ConversionFragment.onCreateView(ConversionFragment.java:44)
04-18 19:15:36.345: D/myapp(19089): at android.app.Fragment.performCreateView(Fragment.java:1695)
04-18 19:15:36.345: D/myapp(19089): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:885)
04-18 19:15:36.345: D/myapp(19089): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
04-18 19:15:36.345: D/myapp(19089): at android.app.BackStackRecord.run(BackStackRecord.java:682)
04-18 19:15:36.345: D/myapp(19089): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435)
04-18 19:15:36.345: D/myapp(19089): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:441)
04-18 19:15:36.345: D/myapp(19089): at android.os.Handler.handleCallback(Handler.java:725)
04-18 19:15:36.345: D/myapp(19089): at android.os.Handler.dispatchMessage(Handler.java:92)
04-18 19:15:36.345: D/myapp(19089): at android.os.Looper.loop(Looper.java:137)
04-18 19:15:36.345: D/myapp(19089): at android.app.ActivityThread.main(ActivityThread.java:5041)
04-18 19:15:36.345: D/myapp(19089): at java.lang.reflect.Method.invokeNative(Native Method)
04-18 19:15:36.345: D/myapp(19089): at java.lang.reflect.Method.invoke(Method.java:511)
04-18 19:15:36.345: D/myapp(19089): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-18 19:15:36.345: D/myapp(19089): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-18 19:15:36.345: D/myapp(19089): at dalvik.system.NativeStart.main(Native Method)
04-18 19:15:38.001: D/AndroidRuntime(19089): Shutting down VM
04-18 19:15:38.001: W/dalvikvm(19089): threadid=1: thread exiting with uncaught exception (group=0x41e8b930)
04-18 19:15:38.025: E/AndroidRuntime(19089): FATAL EXCEPTION: main
04-18 19:15:38.025: E/AndroidRuntime(19089): java.lang.NullPointerException
04-18 19:15:38.025: E/AndroidRuntime(19089): at com.example.app1.ConversionFragment.onCreateView(ConversionFragment.java:45)
04-18 19:15:38.025: E/AndroidRuntime(19089): at android.app.Fragment.performCreateView(Fragment.java:1695)
04-18 19:15:38.025: E/AndroidRuntime(19089): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:885)
04-18 19:15:38.025: E/AndroidRuntime(19089): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1057)
04-18 19:15:38.025: E/AndroidRuntime(19089): at android.app.BackStackRecord.run(BackStackRecord.java:682)
04-18 19:15:38.025: E/AndroidRuntime(19089): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435)
04-18 19:15:38.025: E/AndroidRuntime(19089): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:441)
04-18 19:15:38.025: E/AndroidRuntime(19089): at android.os.Handler.handleCallback(Handler.java:725)
04-18 19:15:38.025: E/AndroidRuntime(19089): at android.os.Handler.dispatchMessage(Handler.java:92)
04-18 19:15:38.025: E/AndroidRuntime(19089): at android.os.Looper.loop(Looper.java:137)
04-18 19:15:38.025: E/AndroidRuntime(19089): at android.app.ActivityThread.main(ActivityThread.java:5041)
04-18 19:15:38.025: E/AndroidRuntime(19089): at java.lang.reflect.Method.invokeNative(Native Method)
04-18 19:15:38.025: E/AndroidRuntime(19089): at java.lang.reflect.Method.invoke(Method.java:511)
04-18 19:15:38.025: E/AndroidRuntime(19089): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
04-18 19:15:38.025: E/AndroidRuntime(19089): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
04-18 19:15:38.025: E/AndroidRuntime(19089): at dalvik.system.NativeStart.main(Native Method)
04-18 19:15:38.040: W/ActivityManager(389): Force finishing activity com.example.app1/.BaseFragment
Upvotes: 2
Views: 2208
Reputation: 12142
It seems like you can't reference correctly the ListView used in the left-side of sliding menu. The problem is you are asking the wrong view (rootView) to find your list, returning in a null reference. You should inflate the menu view yourself and then invoke findViewById() on the inflated view instead, like this:
...
View left = inflater.inflate(R.layout.list,null,false);
...
menu.setMenu(left);
...
ListView lv = (ListView) left.findViewById(R.id.listView1);
...
I think there are another couple of errors in your code anyway. If you want to use the sliding menu inside your fragment, you should use the menu as the returning value of the onCreateView method. For the same reason you should not attach the menu to the entire activity, so you should remove the related line of code.
Upvotes: 3