2015-01-23 3 views
2

92 번 라인에 도달 할 수 없다는 오류가 나타나는 이유는 무엇입니까? 오류는이 라인에 있습니다"연결할 수없는 문"오류가 안드로이드로 반환됩니다.

final RadioButton r1 = (RadioButton) getView().findViewById(R.id.radio1); 

코드 :

public class TabFragmentA extends Fragment { 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     if (container == null) { 
      return null; 
     } 

     return (RelativeLayout) inflater.inflate(R.layout.tab_layout_a, container, false); 


     final RadioButton r1 = (RadioButton) getView().findViewById(R.id.radio1); //the error is here 
     final RadioButton r2 = (RadioButton) getView().findViewById(R.id.radio2); 

     final ImageView iv1 = (ImageView) getView().findViewById(R.id.iv1); 
     final ImageView iv2 = (ImageView) getView().findViewById(R.id.iv2); 

     iv1.setVisibility(View.INVISIBLE); 
     iv2.setVisibility(View.INVISIBLE); 

     r1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       // TODO Auto-generated method stub 
       if(r1.isChecked()) 
       { 
        r2.setChecked(false); 
        iv2.setVisibility(View.INVISIBLE); 
        iv1.setVisibility(View.VISIBLE); 
       } 
      } 
     }); 

     r2.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       // TODO Auto-generated method stub 
       if(r2.isChecked()) 
       { 
        r1.setChecked(false); 
        iv1.setVisibility(View.INVISIBLE); 
        iv2.setVisibility(View.VISIBLE); 
       } 
      } 
     }); 
    } 
} 

로그 캣 오류 :

01-23 02:43:31.082 1903-1903/br.com.eddboytools.PreDim E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: br.com.eddboytools.PreDim, PID: 1903 
    java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference 
      at br.com.eddboytools.PreDim.TabFragmentA.onCreateView(TabFragmentA.java:29) 
      at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478) 
      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927) 
      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 
      at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
      at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460) 
      at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472) 
      at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
      at android.support.v4.view.ViewPager.populate(ViewPager.java:1068) 
      at android.support.v4.view.ViewPager.populate(ViewPager.java:914) 
      at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436) 
      at android.view.View.measure(View.java:17430) 
      at android.widget.LinearLayout.measureVertical(LinearLayout.java:875) 
      at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) 
      at android.view.View.measure(View.java:17430) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
      at android.view.View.measure(View.java:17430) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436) 
      at android.widget.LinearLayout.measureVertical(LinearLayout.java:722) 
      at android.widget.LinearLayout.onMeasure(LinearLayout.java:613) 
      at android.view.View.measure(View.java:17430) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
      at android.view.View.measure(View.java:17430) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
      at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:447) 
      at android.view.View.measure(View.java:17430) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:430) 
      at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560) 
      at android.view.View.measure(View.java:17430) 
      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001) 
      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166) 
      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372) 
      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054) 
      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779) 
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 
      at android.view.Choreographer.doCallbacks(Choreographer.java:580) 
      at android.view.Choreographer.doFrame(Choreographer.java:550) 
      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) 
      at android.os.Handler.handleCallback(Handler.java:739) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5221) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
01-23 02:43:31.094 1903-1915/br.com.eddboytools.PreDim I/art﹕ Background partial concurrent mark sweep GC freed 261(11KB) AllocSpace objects, 0(0B) LOS objects, 27% free, 1328KB/1840KB, paused 20.856ms total 51.174ms 

답변

13

return에 조건문이없는 경우를 제외하고는 다른 진술 위에는 return 문을 넣지 않습니다. 우리가 그렇게하면 그 아래의 모든 진술은 결코 실행되지 않을 것입니다 (모든 상황에서 도달 할 수 없게됨을 의미).

는 return 문은 마지막에해야이

public class TabFragmentA extends Fragment { 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    RelativeLayout rootView = (RelativeLayout) inflater.inflate(R.layout.tab_layout_a, container, false); 


    final RadioButton r1 = (RadioButton) rootView.findViewById(R.id.radio1); 
    final RadioButton r2 = (RadioButton) rootView.findViewById(R.id.radio2); 

    final ImageView iv1 = (ImageView) rootView.findViewById(R.id.iv1); 
    final ImageView iv2 = (ImageView) rootView.findViewById(R.id.iv2); 

    iv1.setVisibility(View.INVISIBLE); 
    iv2.setVisibility(View.INVISIBLE); 

    r1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      // TODO Auto-generated method stub 
      if(r1.isChecked()) 
      { 
       r2.setChecked(false); 
       iv2.setVisibility(View.INVISIBLE); 
       iv1.setVisibility(View.VISIBLE); 
      } 
     } 
    }); 

    r2.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      // TODO Auto-generated method stub 
      if(r2.isChecked()) 
      { 
       r1.setChecked(false); 
       iv1.setVisibility(View.INVISIBLE); 
       iv2.setVisibility(View.VISIBLE); 
      } 
     } 
    }); 
return rootView; 
} 
} 
+1

문제가 해결되었지만 이제는 에뮬레이터에 "불행히도 AppnName이 중지되었습니다."라는 메시지가 나타납니다. –

+0

그리고 어디서 문제가 있는지 모르겠습니다. –

+0

logcat 오류 추적을 넣으십시오. – Rohit5k2

0

당신이 바로 그 위에 복귀있다. 당신이 방법에서 돌아 오지 않으면 아무것도 실행되지 않을 것입니다. 즉, 그 아래에있는 행은 실행되지 않습니다.

컴파일러가이를 보도록 돕고 있습니다.

+0

좋아. 내가 뭘 할 수 있니? 너는 어떤 생각이있어? –

+0

@ Edd_boy, Android를 개발하기 전에 Java 프로그래밍 언어를 잘 이해하고 있어야합니다. –

0

처럼 수행

final RadioButton r1 = (RadioButton) getView().findViewById(R.id.radio1); 
final RadioButton r2 = (RadioButton) getView().findViewById(R.id.radio2); 

return (RelativeLayout) inflater.inflate(R.layout.tab_layout_a, container, false); 
+0

안녕하십니까, StackOverlfow에 오신 것을 환영합니다. 코드 스 니펫이 질문에 대답 할 수는 있지만 코드에 몇 가지 설명을 첨부하는 것이 좋습니다. 몇 가지 설명을 추가하십시오. – Chaithanya