我有一个带有两个片段的应用程序,它们不会从我正在使用的方法切换回原始片段。我觉得这不是实现这个目标的方法。我哪里错了?我的代码如下。
// 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
答案 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以停止常量视图