/**
* 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();
上收到此错误消息无法访问的语句。我希望有人可以帮助我。
答案 0 :(得分:2)
此段代码..
Integer.MIN_VALUE < 1000
永远不会被执行,因为它与切换条件中的任何情况都没有关联...
这就是错误的原因。
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);
}