2013-04-18 3 views
2

조각 클래스에서 jfeinstein10 SlidingMenu를 사용하려고합니다.조각 클래스의 메뉴 이동

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

내 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> 

나는이의 원인이 될 수있는 일 lv.setAdapter(adapter);에서 널 포인트 예외를 받고 있어요?

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 
+0

스택 추적을 게시 할 수 있습니까? 왜 * super.onCreate (savedInstance) *가 있습니까? –

+0

'super.onCreate (savedInstance)'는 존재하지 않습니다. 붙여 넣을 때 이월되었습니다. 그것은 내 응용 프로그램에서 제거되었습니다. logcat이 스택 추적입니까? 나는 logcat을 추가했다. – user1007692

+0

예, 붙인 로그는 괜찮습니다. ConfersionFragment.java의 45 번째 행은 __lv.setAdapter (adapter) __ ??가있는 행입니다. –

답변

3

슬라이딩 메뉴의 왼쪽에 사용 된 ListView를 올바르게 참조 할 수없는 것 같습니다. 문제는 잘못된 뷰 (rootView)에 목록을 찾고 null 참조로 반환하도록 요청하는 것입니다. 이 같은 대신 부풀려에 findViewById를()를 직접보기 메뉴를 팽창하고 호출해야합니다

... 
View left = inflater.inflate(R.layout.list,null,false); 
... 
menu.setMenu(left); 
... 
ListView lv = (ListView) left.findViewById(R.id.listView1); 
... 

내가 오류의 또 다른 커플 어쨌든 코드에 있다고 생각합니다. 프래그먼트 안에서 슬라이딩 메뉴를 사용하려면 메뉴를 onCreateView 메소드의 반환 값으로 사용해야합니다. 같은 이유로 전체 활동에 메뉴를 첨부하지 않아야하므로 관련 코드 줄을 제거해야합니다.

+0

k, 내 문제를 해결합니다. 그러나, 만약 내가'return menu'를 호출하고'menu.attachToActivity (...) '를 제거하면, 지금 내가 가진 변환 문제는 팽창 된 부분이 보이지 않는다는 것입니다. 표시되는 유일한 것은 왼쪽에서 가져올 때의 메뉴입니다. – user1007692

+0

이전 메뉴 인 __rootView__를 'menu.setContent (rootView)'를 통해 슬라이딩 메뉴의 "content"로 설정해야합니다. –

+0

나를 따라와 주셔서 감사합니다! – user1007692