为什么我的片段出现“无法访问的语句错误”?

时间:2016-03-12 16:26:19

标签: java android fragment

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

        }
    }


}

我的活动已扩展到AppCompatActivity。我也成功设置了一个抽屉。现在,当我对Fragment进行交易时,基本上它使用了begintransaction。但我在FragmentManager fragmentManager = getSupportFragmentManager();上收到此错误消息无法访问的语句。我希望有人可以帮助我。

4 个答案:

答案 0 :(得分:2)

此段代码..

Integer.MIN_VALUE < 1000

永远不会被执行,因为它与切换条件中的任何情况都没有关联...

这就是错误的原因。

Qhick修复:

你可以:

1-。将其移出开关盒

2 - 。想一想应该执行哪些案件。

答案 1 :(得分:0)

看起来您需要重新考虑switch语句的逻辑。 if (fragment != null) { FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = .... } 语句终止switch语句,并且在运行后没有代码,因此break应该在任何可能运行的代码之后。

答案 2 :(得分:0)

在默认部分的代码后面给break代码无法访问,因为它在默认位置首先被中断。因此,请更改以下默认部分:

        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;

答案 3 :(得分:0)

default控件流中的

case表示如果其他任何选项未进行锻炼,则会调用default

如果您将break放入其中,则后续内容将为def。无法到达。

查看代码的逻辑,if应位于switch

之外
switch(position){
    // cases
    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);
}
相关问题