2014-02-28 2 views
0

탐색 용 서랍을 사용하는 Android 애플리케이션이 있습니다. 탐색 창에서 항목을 클릭하여 액세스 할 수있는 조각 중 하나의 선형 레이아웃에서 onClick 이벤트에 응답하려고합니다. 여기에 선형 레이아웃선형 레이아웃에 액세스 할 때 조각 코드의 nullpointer 예외가 발생했습니다.

<LinearLayout 
     android:id="@+id/btn_take_photo" 
     android:layout_width="match_parent" 
     android:layout_height="55dp" 
     android:padding="5dp" 
     android:orientation="horizontal" 
     android:weightSum="10" 
     android:descendantFocusability="blocksDescendants" 
     android:clickable="true" 
     android:background="@drawable/presc_bg" 
     android:layout_margin="10dp"> 



     <ImageView 
      android:layout_width="0dp" 
      android:layout_weight="1" 
      android:layout_margin="5dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" 
      android:background="@drawable/btn_camera" /> 

     <TextView 
      android:layout_width="0dp" 
      android:layout_weight="9" 
      android:gravity="center" 
      android:textColor="@color/white" 
      android:text="Take a picture of your prescription" 
      android:layout_height="match_parent" /> 

    </LinearLayout> 

이야하지만 곧 응용 프로그램을 설치하고 실행, 나는 오류 및 응용 프로그램의 충돌에서 얻을 HomeFragment.java

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    if (container == null) { return null; } 
    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 

    try { 
     take_photo = (LinearLayout) getView().findViewById(R.id.btn_take_photo); 
     open_gallery = (LinearLayout) getView().findViewById(R.id.btn_open_gallery); 
    } catch (NullPointerException npe) { 
     Log.e("samako", npe.toString(), npe); 
    } 
    return rootView; 
} 

- 여기

는 조각 코드입니다 적어도, 나는 try catch를 추가 할 때까지.

02-28 15:25:38.598 22386-22386/com.genesis.genapp E/samako﹕ java.lang.NullPointerException 
java.lang.NullPointerException 
     at com.genesis.genapp.fragments.HomeFragment.onCreateView(HomeFragment.java:31) 
     at android.app.Fragment.performCreateView(Fragment.java:1700) 
     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890) 
     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 
     at android.app.BackStackRecord.run(BackStackRecord.java:684) 
     at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 
     at android.app.Activity.performStart(Activity.java:5240) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
     at android.app.ActivityThread.access$800(ActivityThread.java:135) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5017) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
     at dalvik.system.NativeStart.main(Native Method) 

답변

1

변경

take_photo = (LinearLayout) rootView.findViewById(R.id.btn_take_photo); 
open_gallery = (LinearLayout) rootView.findViewById(R.id.btn_open_gallery); 

또는 널 (null) onActivityCreated

take_photo = (LinearLayout) getView().findViewById(R.id.btn_take_photo); 
open_gallery = (LinearLayout) getView().findViewById(R.id.btn_open_gallery); 

getView 수익률 : 여기에 내가지고있어 오류가 있습니다. 너무 일찍 부르세요. onActivityCreated에서 사용하십시오.

+0

감사합니다, 저를 위해 일했습니다. –

1

이 시도 ..

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 
     take_photo = (LinearLayout) rootView.findViewById(R.id.btn_take_photo); 
     open_gallery = (LinearLayout)rootView.findViewById(R.id.btn_open_gallery); 
    return rootView; 
} 
+0

감사합니다. 지금 수정되었습니다. +1 : –

관련 문제