Java 为什么我得到了;“无法访问的语句错误”;为了碎片?

Java 为什么我得到了;“无法访问的语句错误”;为了碎片?,java,android,fragment,Java,Android,Fragment,我的活动已扩展到AppCompative活动。我也成功地设置了一个抽屉。现在,当我在片段上执行事务时,它基本上使用begintransaction。但是我在FragmentManager FragmentManager=getSupportFragmentManager()上得到了这个错误消息Unreachable语句。我希望有人能帮助我。这段代码 /** * Created by myozawoo on 3/12/16. */ public class MainActivity exten

我的活动已扩展到AppCompative活动。我也成功地设置了一个抽屉。现在,当我在片段上执行事务时,它基本上使用begintransaction。但是我在
FragmentManager FragmentManager=getSupportFragmentManager()上得到了这个错误消息Unreachable语句。我希望有人能帮助我。

这段代码

/**
 * Created by myozawoo on 3/12/16.
 */
public class MainActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {

    private static String TAG = MainActivity.class.getSimpleName();

    @Bind(R.id.home_screen_toolbar) Toolbar toolbar;

    private FragmentDrawer fragmentDrawer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);



        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        fragmentDrawer = (FragmentDrawer) getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        fragmentDrawer.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar);
        fragmentDrawer.setDrawerListener(this);

        displayView(0);


    }

    @Override
    public void onDrawerItemSelected(View view, int position) {

        displayView(position);

    }

    private void displayView(int position) {
        Fragment fragment = null;
        String title = getString(R.string.app_name);
        switch (position) {
            case 0:
                fragment = new SearchDonorsFragment();
                title = getString(R.string.nav_item_search_donors);
                break;
            case 1:
                fragment = new ProfileFragment();
                title = getString(R.string.nav_item_profile);
                break;
            case 2:
                fragment = new AboutFragment();
                title = getString(R.string.nav_item_about);
                break;
            default:
                break;

            if (fragment != null) {
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.container_body, fragment);
                fragmentTransaction.commit();

                // set the toolbar title
                getSupportActionBar().setTitle(title);
            }

        }
    }


}
永远不会执行,因为它与开关条件中的任何情况都不关联

这就是错误的原因

问题修正: 你可以:

1-。把它从开关箱里拿出来


2-。思考应该在哪种情况下执行。

这段代码

/**
 * Created by myozawoo on 3/12/16.
 */
public class MainActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {

    private static String TAG = MainActivity.class.getSimpleName();

    @Bind(R.id.home_screen_toolbar) Toolbar toolbar;

    private FragmentDrawer fragmentDrawer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);



        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        fragmentDrawer = (FragmentDrawer) getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        fragmentDrawer.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar);
        fragmentDrawer.setDrawerListener(this);

        displayView(0);


    }

    @Override
    public void onDrawerItemSelected(View view, int position) {

        displayView(position);

    }

    private void displayView(int position) {
        Fragment fragment = null;
        String title = getString(R.string.app_name);
        switch (position) {
            case 0:
                fragment = new SearchDonorsFragment();
                title = getString(R.string.nav_item_search_donors);
                break;
            case 1:
                fragment = new ProfileFragment();
                title = getString(R.string.nav_item_profile);
                break;
            case 2:
                fragment = new AboutFragment();
                title = getString(R.string.nav_item_about);
                break;
            default:
                break;

            if (fragment != null) {
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.container_body, fragment);
                fragmentTransaction.commit();

                // set the toolbar title
                getSupportActionBar().setTitle(title);
            }

        }
    }


}
永远不会执行,因为它与开关条件中的任何情况都不关联

这就是错误的原因

问题修正: 你可以:

1-。把它从开关箱里拿出来


2-。考虑应该在哪种情况下执行。

看起来您需要重新考虑switch语句的逻辑。
break
语句终止switch语句,并且在它运行之后没有代码,因此
break
应该在任何可能运行的代码之后。

看起来您需要重新考虑switch语句的逻辑。
break
语句终止switch语句,并且在它运行后没有代码,因此
break
应该位于任何可能运行的代码之后。

在默认部分的代码之后给出
break
无法访问代码,因为在默认位置它被赋予了“先断开”的功能。因此,请按如下所示更改默认部分:

        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = ....
        }

在默认部分的代码之后给出
break
无法访问代码,因为在默认位置它被赋予了“先断开”的功能。因此,请按如下所示更改默认部分:

        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = ....
        }

default
情况下
控制流意味着,如果任何其他选项未运行,将调用
default

如果将
中断
放入其中,将定义以下内容。遥不可及

查看代码的逻辑,if
应该位于
开关的外部

        default:
        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container_body, fragment);
            fragmentTransaction.commit();

            // set the toolbar title
            getSupportActionBar().setTitle(title);
        }
        break;

default
情况下
控制流意味着,如果任何其他选项未运行,将调用
default

如果将
中断
放入其中,将定义以下内容。遥不可及

查看代码的逻辑,if
应该位于
开关的外部

        default:
        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.container_body, fragment);
            fragmentTransaction.commit();

            // set the toolbar title
            getSupportActionBar().setTitle(title);
        }
        break;

您认为在
default
break
语句之后会发生什么?不知道。。。因为。。。显示视图(0);我该怎么做bro?中断后,编译器将退出switch case,并且在任何情况下都不会调用事务代码在
默认
中断
语句后会发生什么?不知道。。。因为。。。显示视图(0);我该怎么做bro?在中断后,你的编译器将退出switch case,你的事务代码在任何情况下都不会被调用1对我来说是可以的bro。。。我忘了搬出开关箱:当你找到答案时:)1对我来说没问题,兄弟。。。我忘了搬出开关箱:当你找到答案时:)