我得到的错误"不可到达的语句和QUOT;返回的android [英] I get the error "Unreachable statement" return in android

查看:506
本文介绍了我得到的错误"不可到达的语句和QUOT;返回的android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么我得到92行是不可达语句错误?
该错误是在这一行:

Why do I get the error that line 92 is an unreachable statement? The error is in this line:

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

code:

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

logcat的错误:

Logcat error:

2月1日至23日:43:31.082 1903年至1903年/ br.com.eddboytools preDim E / AndroidRuntime:致命异常:主要
    过程:br.com.eddboytools preDim,PID:1903年
    显示java.lang.NullPointerException:试图调用虚拟方法android.view.View android.view.View.findViewById(INT)对空对象引用
            在br.com.eddboytools。preDim.TabFragmentA.onCreateView(TabFragmentA.java:29)
            在android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)
            在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
            在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
            在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
            在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
            在android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
            在android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
            在android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
            在android.support.v4.view.ViewPager.populate(ViewPager.java:914)
            在android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
            在android.view.View.measure(View.java:17430)
            在android.widget.LinearLayout.measureVertical(LinearLayout.java:875)
            在android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
            在android.view.View.measure(View.java:17430)
            在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            在android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            在android.view.View.measure(View.java:17430)
            在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            在android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
            在android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
            在android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
            在android.view.View.measure(View.java:17430)
            在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            在android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            在android.view.View.measure(View.java:17430)
            在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            在com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:447)
            在android.view.View.measure(View.java:17430)
            在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
            在android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
            在com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2560)
            在android.view.View.measure(View.java:17430)
            在android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
            在android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166)
            在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
            在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
            在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5779)
            在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:767)
            在android.view.Choreographer.doCallbacks(Choreographer.java:580)
            在android.view.Choreographer.doFrame(Choreographer.java:550)
            在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:753)
            在android.os.Handler.handleCallback(Handler.java:739)
            在android.os.Handler.dispatchMessage(Handler.java:95)
            在android.os.Looper.loop(Looper.java:135)
            在android.app.ActivityThread.main(ActivityThread.java:5221)
            在java.lang.reflect.Method.invoke(本机方法)
            在java.lang.reflect.Method.invoke(Method.java:372)
            在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:899)
            在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
2月1日至23日:43:31.094 1903年至1915年/ br.com.eddboytools preDim I /艺术:背景部分并发标记扫描GC释放261(11KB)AllocSpace对象,0(0B)LOS对象,27%免费,1328KB / 1840KB,暂停20.856ms总51.174ms

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

推荐答案

我们不把收益上面的任何其他语句声明,除非该回归终止在任何条件语句。如果我们这样做,然后下面所有的语句永远不会被执行(意味着它会成为任何情况下都无法访问)这会导致你得到的错误。

We don't put return statement above any other statement unless that return is under any conditional statement. If we do that then all the statements below that would never get executed (means it would become unreachable under all circumstances) which causes the error you are getting.

做这样

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

这篇关于我得到的错误"不可到达的语句和QUOT;返回的android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆