2015-09-27 3 views
1

Хотя я оглядывался, не смог найти правильный ответ. В моем заголовке ящика навигации я предоставляю пользователю его образ и имя, но я также разрешаю пользователю изменять свое имя и изображение из приложения. Эти изменения сохраняются в диспетчере сеансов. Теперь я хочу отразить эти изменения в заголовке ящика навигации. Все работает нормально, потому что, когда я закрываю приложение и запускаю его снова, он показывает изменения. Итак, теперь мне нужен способ обновить заголовок ящика навигации.Обновить заголовок в навигационном ящике

Выберите изображение из галереи в разделе «Профиль фрагмента».

private void onSelectFromGalleryResult(Intent data) { 

     String selectedImagePath = getPathFromCameraData(data, getActivity()); 

     Bitmap bm; 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inJustDecodeBounds = true; 
     BitmapFactory.decodeFile(selectedImagePath, options); 
     final int REQUIRED_SIZE = 200; 
     int scale = 1; 
     while (options.outWidth/scale/2 >= REQUIRED_SIZE 
       && options.outHeight/scale/2 >= REQUIRED_SIZE) 
      scale *= 2; 
     options.inSampleSize = scale; 
     options.inJustDecodeBounds = false; 
     bm = BitmapFactory.decodeFile(selectedImagePath, options); 
     bitmap = bm; 
     profilephoto = BitMapToString(bm); 

     session.setprofilepic(profilephoto);// make changes in session. 
      profilepic.setImageBitmap(bm); 

    } 

Главная деятельность

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_homepageactivity); 
     session = new SessionManager(getApplicationContext()); 

     mTitle = mDrawerTitle = getTitle(); 

     topToolBar = (Toolbar)findViewById(R.id.toolbar); 
     setSupportActionBar(topToolBar); 
     //topToolBar.setLogo(R.drawable.logo); 
     topToolBar.setLogoDescription(getResources().getString(R.string.logo_desc)); 


     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView) findViewById(R.id.left_drawer); 
     LayoutInflater inflater = getLayoutInflater(); 
     listHeaderView = inflater.inflate(R.layout.header_list, null, false); 

     //ImageView profile = (ImageView)listHeaderView.findViewById(R.id.profile_picture); 

     TextView name = (TextView)listHeaderView.findViewById(R.id.headername); 
     profilepic = (ImageView)listHeaderView.findViewById(R.id.profile); 

     user = session.getUserDetails(); 
     profilepic.setImageBitmap(StringToBitMap(user.get(SessionManager.KEY_PROFILEPIC))); 
     name.setText(user.get(SessionManager.KEY_NAME)); 
     mDrawerList.addHeaderView(listHeaderView); ////// HEADER ADDED 


     List<ItemObject> listViewItems = new ArrayList<ItemObject>(); 
     listViewItems.add(new ItemObject("Attendance", R.drawable.attendance)); 
     // listViewItems.add(new ItemObject("Time table", R.drawable.timetable)); 
     // listViewItems.add(new ItemObject("Class 1", R.drawable.classicon)); 

     adapter = new CustomAdapter(this, listViewItems); 


     mDrawerList.setAdapter(new CustomAdapter(this, listViewItems)); 

     mDrawerToggle = new ActionBarDrawerToggle(Homepageactivity.this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { 

      /** Called when a drawer has settled in a completely closed state. */ 
      public void onDrawerClosed(View view) { 
       super.onDrawerClosed(view); 
       getSupportActionBar().setTitle(mTitle); 
       invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
      } 

      /** Called when a drawer has settled in a completely open state. */ 
      public void onDrawerOpened(View drawerView) { 
       super.onDrawerOpened(drawerView); 
       getSupportActionBar().setTitle(mDrawerTitle); 
       profilepic.setImageBitmap(StringToBitMap(user.get(SessionManager.KEY_PROFILEPIC))); 
       invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
      } 
     }; 

     // Set the drawer toggle as the DrawerListener 
     mDrawerLayout.setDrawerListener(mDrawerToggle); 
     mDrawerToggle.setDrawerIndicatorEnabled(true); 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 

     mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       // make Toast when click 
       Toast.makeText(getApplicationContext(), "Position " + position, Toast.LENGTH_LONG).show(); 
       selectItemFragment(position); 
      } 
     }); 
    } 
+0

Rishabh, вы разрешили свою проблему? Если да, то отправьте свое решение (строка кода) –

ответ

3

Хотя я очень извиняюсь за размещение ответ это поздно. Я решил проблему, обновляя заголовок всякий раз, когда открываю ящик, или мы можем, когда вызывается onDrawerOpened.

mDrawerToggle = new ActionBarDrawerToggle(Homepageactivity.this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { 

     /** Called when a drawer has settled in a completely closed state. */ 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      getSupportActionBar().setTitle(mTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 

     /** Called when a drawer has settled in a completely open state. */ 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      getSupportActionBar().setTitle(mDrawerTitle); 
      session = new SessionManager(getApplicationContext()); 
      user = session.getUserDetails(); 
      profilepic.setImageBitmap(StringToBitMap(user.get(SessionManager.KEY_PROFILEPIC))); 
      name.setText(user.get(SessionManager.KEY_NAME)); 
      lastsynced.setText(lastsynced()); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
     } 
    }; 
Смежные вопросы