Android Fragment SetTitle()不起作用(Android Fragment SetTitle() is not working)

编程入门 行业动态 更新时间:2024-10-28 09:25:29
Android Fragment SetTitle()不起作用(Android Fragment SetTitle() is not working)

每当一个片段被调用它没有设置时,setTitle(menuItem.getTitle())就不起作用。当我尝试从一个片段改变或跳转到那个时,动作栏只设置了应用名称。

public class MainActivity extends AppCompatActivity { Toolbar mToolBar; NavigationView mNavigationView; DrawerLayout mDrawerLayout; ActionBarDrawerToggle mActionBarDrawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(savedInstanceState == null){ getSupportFragmentManager().beginTransaction().replace(R.id.containerView,new HomeFragment()).commit(); } mToolBar = (Toolbar)findViewById(R.id.toolbar); setSupportActionBar(mToolBar); mDrawerLayout = (DrawerLayout)findViewById(R.id.drawerLayout); mNavigationView = (NavigationView)findViewById(R.id.navigationDrawer); mActionBarDrawerToggle = setupDrawerToggle(); mDrawerLayout.addDrawerListener(mActionBarDrawerToggle); setupDrawerContent(mNavigationView); } private ActionBarDrawerToggle setupDrawerToggle(){ return new ActionBarDrawerToggle(this,mDrawerLayout,mToolBar,R.string.drawer_open,R.string.drawer_close); } private void setupDrawerContent(NavigationView mNavigationView){ mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { selectDrawerItem(menuItem); return true; } }); } public void selectDrawerItem(MenuItem menuItem){ Fragment fragment = null; Class fragmentClass; switch (menuItem.getItemId()){ case R.id.nav_home: fragmentClass = HomeFragment.class; break; case R.id.nav_rate_card: fragmentClass = RateCardFragment.class; break; case R.id.nav_orders: fragmentClass = OrderFragment.class; break; case R.id.nav_setting: fragmentClass = SettingFragment.class; break; case R.id.nav_about_us: fragmentClass = AboutUsFragment.class; break; default: fragmentClass = HomeFragment.class; } try{ fragment = (Fragment) fragmentClass.newInstance(); }catch (Exception ex){ ex.printStackTrace(); } FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction().replace(R.id.containerView,fragment).commit(); // Highlight the selected item has been done by NavigationView //menuItem.setChecked(true); // Set action bar title setTitle(menuItem.getTitle()); mDrawerLayout.closeDrawers(); } @Override public boolean onOptionsItemSelected(MenuItem item) { // The action bar home/up action should open or close the drawer. switch (item.getItemId()) { case android.R.id.home: mDrawerLayout.openDrawer(GravityCompat.START); return true; } if (mActionBarDrawerToggle.onOptionsItemSelected(item)){ return true; } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mActionBarDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Pass any configuration change to the drawer toggles mActionBarDrawerToggle.onConfigurationChanged(newConfig); } }

setTitle(menuItem.getTitle()) is not working whenever a fragment is called it is not setting up.Whenever I tried to change or jump from one fragment to another at that time action bar is set with app name only.

public class MainActivity extends AppCompatActivity { Toolbar mToolBar; NavigationView mNavigationView; DrawerLayout mDrawerLayout; ActionBarDrawerToggle mActionBarDrawerToggle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if(savedInstanceState == null){ getSupportFragmentManager().beginTransaction().replace(R.id.containerView,new HomeFragment()).commit(); } mToolBar = (Toolbar)findViewById(R.id.toolbar); setSupportActionBar(mToolBar); mDrawerLayout = (DrawerLayout)findViewById(R.id.drawerLayout); mNavigationView = (NavigationView)findViewById(R.id.navigationDrawer); mActionBarDrawerToggle = setupDrawerToggle(); mDrawerLayout.addDrawerListener(mActionBarDrawerToggle); setupDrawerContent(mNavigationView); } private ActionBarDrawerToggle setupDrawerToggle(){ return new ActionBarDrawerToggle(this,mDrawerLayout,mToolBar,R.string.drawer_open,R.string.drawer_close); } private void setupDrawerContent(NavigationView mNavigationView){ mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { selectDrawerItem(menuItem); return true; } }); } public void selectDrawerItem(MenuItem menuItem){ Fragment fragment = null; Class fragmentClass; switch (menuItem.getItemId()){ case R.id.nav_home: fragmentClass = HomeFragment.class; break; case R.id.nav_rate_card: fragmentClass = RateCardFragment.class; break; case R.id.nav_orders: fragmentClass = OrderFragment.class; break; case R.id.nav_setting: fragmentClass = SettingFragment.class; break; case R.id.nav_about_us: fragmentClass = AboutUsFragment.class; break; default: fragmentClass = HomeFragment.class; } try{ fragment = (Fragment) fragmentClass.newInstance(); }catch (Exception ex){ ex.printStackTrace(); } FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction().replace(R.id.containerView,fragment).commit(); // Highlight the selected item has been done by NavigationView //menuItem.setChecked(true); // Set action bar title setTitle(menuItem.getTitle()); mDrawerLayout.closeDrawers(); } @Override public boolean onOptionsItemSelected(MenuItem item) { // The action bar home/up action should open or close the drawer. switch (item.getItemId()) { case android.R.id.home: mDrawerLayout.openDrawer(GravityCompat.START); return true; } if (mActionBarDrawerToggle.onOptionsItemSelected(item)){ return true; } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mActionBarDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); // Pass any configuration change to the drawer toggles mActionBarDrawerToggle.onConfigurationChanged(newConfig); } }

最满意答案

使用getSupportActionBar().setTitle()并尝试。

Use getSupportActionBar().setTitle() and try.

更多推荐

本文发布于:2023-07-30 03:38:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1322189.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不起作用   Fragment   Android   working   SetTitle

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!