Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 刷新导航抽屉中的标题_Android_Android Fragments - Fatal编程技术网

Android 刷新导航抽屉中的标题

Android 刷新导航抽屉中的标题,android,android-fragments,Android,Android Fragments,虽然我一直在四处寻找,却找不到正确的答案。 在我的导航抽屉标题中,我向用户提供了他的图像和姓名,但我也允许用户从应用程序中更改他/她的名称和图像。 这些更改存储在会话管理器中。 现在,我想在导航抽屉标题中反映这些更改。 一切正常,因为当我关闭应用程序并再次运行时,它会显示更改。 所以现在我需要的是一种刷新导航抽屉标题的方法 从配置文件片段中的库中选择图像 private void onSelectFromGalleryResult(Intent data) { String

虽然我一直在四处寻找,却找不到正确的答案。 在我的导航抽屉标题中,我向用户提供了他的图像和姓名,但我也允许用户从应用程序中更改他/她的名称和图像。 这些更改存储在会话管理器中。 现在,我想在导航抽屉标题中反映这些更改。 一切正常,因为当我关闭应用程序并再次运行时,它会显示更改。 所以现在我需要的是一种刷新导航抽屉标题的方法

从配置文件片段中的库中选择图像

 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);
            }
        });
    }
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u homepageactivity);
session=newsessionmanager(getApplicationContext());
mTitle=mDrawerTitle=getTitle();
topToolBar=(Toolbar)findviewbyd(R.id.Toolbar);
设置支持操作栏(顶部工具栏);
//topToolBar.setLogo(R.drawable.logo);
setLogoDescription(getResources().getString(R.string.logo_desc));
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
mDrawerList=(ListView)findViewById(R.id.left\u抽屉);
LayoutInflater充气机=getLayoutInflater();
listHeaderView=充气机充气(R.layout.header\u列表,空,假);
//ImageView配置文件=(ImageView)listHeaderView.findViewById(R.id.profile\u图片);
TextView名称=(TextView)listHeaderView.findViewById(R.id.headername);
profilepic=(ImageView)listHeaderView.findViewById(R.id.profile);
user=session.getUserDetails();
setImageBitmap(StringToBitMap(user.get(SessionManager.KEY_profilepic));
name.setText(user.get(SessionManager.KEY_name));
mDrawerList.addHeaderView(listHeaderView);//添加了页眉
List listViewItems=new ArrayList();
添加(新的ItemObject(“Attention”,R.drawable.Attention));
//添加(新的ItemObject(“时间表”,R.drawable.timeline));
//添加(新的ItemObject(“类1”,R.drawable.classicon));
adapter=新的CustomAdapter(此为listViewItems);
setAdapter(新的CustomAdapter(这个,listViewItems));
mDrawerToggle=newactionBarDrawerToggle(Homepageactivity.this、mDrawerLayout、R.string.drawer\u open、R.string.drawer\u close){
/**当抽屉处于完全关闭状态时调用*/
公共无效onDrawerClosed(视图){
super.onDrawerClosed(视图);
getSupportActionBar().setTitle(mTitle);
InvalidateOptions SMenu();//创建对OnPrepareOptions SMenu()的调用
}
/**当抽屉处于完全打开状态时调用*/
打开图纸上的公共空白(视图抽屉视图){
super.onDrawerOpened(抽屉视图);
getSupportActionBar().setTitle(mDrawerTitle);
setImageBitmap(StringToBitMap(user.get(SessionManager.KEY_profilepic));
InvalidateOptions SMenu();//创建对OnPrepareOptions SMenu()的调用
}
};
//将抽屉开关设置为抽屉定位器
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerToggle.setDrawerIndicatorEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mDrawerList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
//单击时制作烤面包片
Toast.makeText(getApplicationContext(),“Position”+Position,Toast.LENGTH\u LONG.show();
选择项目片段(位置);
}
});
}

尽管我很抱歉这么晚才发布答案。 每当我打开抽屉或调用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()
        }
    };

Rishabh,你的问题解决了吗?如果是,请发布您的解决方案(代码行)以可靠地更新导航抽屉标题中的
TextView
,似乎有必要再次检索该方法中的所有引用。我将您的答案与此结合起来:。我之所以这么说是因为您在
onDrawerOpened()
中使用了
profilepic
,但您在
onCreate()
中定义了它。那对我不起作用。与您的案例进行类比,我需要在
onDrawerOpened()
中再次检索
profilepic