片段不会切换回视图和布尔变量显示为始终为假

时间:2014-12-21 18:15:33

标签: android android-fragments fragment

我有一个带有两个片段的应用程序,它们不会从我正在使用的方法切换回原始片段。我觉得这不是实现这个目标的方法。我哪里错了?我的代码如下。

// region GlobalVars
boolean viewLib;
// endregion

// region Init
void Init () {
    viewLib = false;
}
// endregion

// region onCreate
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_music);
    Init();

    // Set Initial Library Fragment
    if (findViewById(R.id.fragment_container) != null) {
        if (savedInstanceState != null) {
            return;
        }
        PlayerFragment firstFragment = new PlayerFragment();
        firstFragment.setArguments(getIntent().getExtras());
        getSupportFragmentManager().beginTransaction()
                .add(R.id.fragment_container, firstFragment).commit();
    }
}
// endregion

// region SwitchView
void SwitchView () {
    if (viewLib = false) {
        Toast.makeText(getApplicationContext(), "viewLib", Toast.LENGTH_SHORT).show();
        Library();
        viewLib = true;
    } else {
        Toast.makeText(getApplicationContext(), "!viewLib", Toast.LENGTH_SHORT).show();
        Player();
        viewLib = false;
    }
}
//region Library
void Library() {
    LibraryFragment newFragment = new LibraryFragment();
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

    transaction.replace(R.id.fragment_container, newFragment);
    transaction.addToBackStack(null);

    transaction.commit();
}
// endregion

//region Player
void Player() {
    PlayerFragment newFragment = new PlayerFragment();
    //Bundle args = new Bundle();
    //args.putInt(LibraryFragment.ARG_POSITION, position);
    //newFragment.setArguments(args);
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

    transaction.replace(R.id.fragment_container, newFragment);
    transaction.addToBackStack(null);

    transaction.commit();
}
// endregion
// endregion

// region Menu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_music, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_library:
            SwitchView();
            return true;
        case R.id.action_settings:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
// endregion

1 个答案:

答案 0 :(得分:0)

修正我的问题。我这样做了:

void SwitchView() {
    if (!viewLib) {
        Toast.makeText(getApplicationContext(), "viewLib", Toast.LENGTH_SHORT).show();
        Library();
        viewLib = true;
    } else {
        Toast.makeText(getApplicationContext(), "!viewLib", Toast.LENGTH_SHORT).show();
        Player();
        viewLib = false;
    }
}

在修复布尔测试中的错误后,似乎现在正常工作。现在我所要做的就是覆盖onBackPressed以停止常量视图