Android 替换提交后标题更改但片段保持不变
Android title changes but fragment stays the same after replace commit
我有一个简单的导航抽屉。当我单击项目以更改当前片段时,它会运行替换命令的代码,但片段不会更改。
这是我设置导航抽屉的方法:
private void setupNavigationMenu(final Bundle savedInstanceState) {
final DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.nav_drawer_items);
// Create the navigation drawer.
navigationDrawer = new NavigationDrawer(this, toolbar, drawerLayout, mDrawerList,
R.id.main_fragment_container);
String[] osArray = {"Discover Tunes", "My Discovered Tunes"};
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, osArray);
mDrawerList.setAdapter(mAdapter);
if (savedInstanceState == null) {
// Add the home fragment to be displayed initially.
discoverSongs();
}
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == 0){
discoverSongs();
drawerLayout.closeDrawers();
} else {
myDiscoveredSongs();
drawerLayout.closeDrawers();
}
}
});
正如您在上面看到的,我有 onitemclicklistner 运行 函数 discoverSongs() 和 myDiscoveredSongs()。当我单击列表时,我可以看到正确的位置正在工作,正确的函数是 运行。但是 discoverSongs() 的片段总是出现。
这是我的 discoverSongs() 函数:
public void discoverSongs() {
final Fragment fragment = new DiscoverSongFragment();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment_container, fragment, DiscoverSongFragment.class.getSimpleName())
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit();
setTitle("Discover Tunes");
我的 myDiscoveredSongs() 函数如下所示:
public void myDiscoveredSongs() {
final Fragment fragment = new DiscoverSongFragment();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment_container, fragment, MyDiscoveredSongsFragment.class.getSimpleName())
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit();
setTitle("My Discovered Tunes");
}
感谢您的帮助。
您在 myDiscoveredSongs() 方法中使用了相同的片段名称,因此请更改您编写代码的这一行
final Fragment fragment = new DiscoverSongFragment();
在 myDiscoveredSongs() 中。
我有一个简单的导航抽屉。当我单击项目以更改当前片段时,它会运行替换命令的代码,但片段不会更改。
这是我设置导航抽屉的方法:
private void setupNavigationMenu(final Bundle savedInstanceState) {
final DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.nav_drawer_items);
// Create the navigation drawer.
navigationDrawer = new NavigationDrawer(this, toolbar, drawerLayout, mDrawerList,
R.id.main_fragment_container);
String[] osArray = {"Discover Tunes", "My Discovered Tunes"};
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, osArray);
mDrawerList.setAdapter(mAdapter);
if (savedInstanceState == null) {
// Add the home fragment to be displayed initially.
discoverSongs();
}
mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == 0){
discoverSongs();
drawerLayout.closeDrawers();
} else {
myDiscoveredSongs();
drawerLayout.closeDrawers();
}
}
});
正如您在上面看到的,我有 onitemclicklistner 运行 函数 discoverSongs() 和 myDiscoveredSongs()。当我单击列表时,我可以看到正确的位置正在工作,正确的函数是 运行。但是 discoverSongs() 的片段总是出现。
这是我的 discoverSongs() 函数:
public void discoverSongs() {
final Fragment fragment = new DiscoverSongFragment();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment_container, fragment, DiscoverSongFragment.class.getSimpleName())
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit();
setTitle("Discover Tunes");
我的 myDiscoveredSongs() 函数如下所示:
public void myDiscoveredSongs() {
final Fragment fragment = new DiscoverSongFragment();
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment_container, fragment, MyDiscoveredSongsFragment.class.getSimpleName())
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit();
setTitle("My Discovered Tunes");
}
感谢您的帮助。
您在 myDiscoveredSongs() 方法中使用了相同的片段名称,因此请更改您编写代码的这一行
final Fragment fragment = new DiscoverSongFragment();
在 myDiscoveredSongs() 中。