我正在使用最近Google提供的支持库将导航抽屉添加到我的应用程序中。在导航抽屉的标题中,我定义了一个CircleImageView来设置用户的配置文件图片,在它下面是他的名字。

所有这些信息,首先是用户在应用程序的第一次启动时定义的,所以当mainActivity启动时,图像和名称将被加载到标题中。但我给了用户在应用程序中修改这些的机会。如果用户转到配置文件框架,并选择一个新的图像作为配置文件图片,或者如果他更改了名称,该参数将不会在导航抽屉的标题中更新,直到应用程序关闭并再次加载。
这就是我如何在mainActivity中定义它的方法:
public class MainActivity extends AppCompatActivity implements DrawerLayout.DrawerListener {
private NavigationView navView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
....
navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
displayFragment(menuItem.getItemId());
drawerLayout.closeDrawers();
return true;
}
});
}不需要实现DrawerLayout.DrawerListener,但正如顶部所示,我这样做是为了尝试实时更新标头。这些实现了下一个方法:
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
}
@Override
public void onDrawerOpened(View drawerView) {
try {
ContextWrapper cw = new ContextWrapper(getApplicationContext());
File directory = cw.getDir("profile", Context.MODE_PRIVATE);
File mypath = new File(directory, "thumbnail.png");
Bitmap bitmap = BitmapFactory.decodeStream(new FileInputStream(mypath));
thumbview.setImageBitmap(bitmap);
username = mPreferences.getString("NAME", null);
nameview.setText(username);
} catch (FileNotFoundException e) {
Log.e("LOAD_IMAGE", e.getMessage(), e);
thumbview.setImageResource(R.drawable.default_thumbnail);
}
}
@Override
public void onDrawerClosed(View drawerView) {
}
@Override
public void onDrawerStateChanged(int newState) {
}在onDrawerOpened()方法中,我使用了与onCreate中使用的代码相同的代码来加载配置文件图片和名称。这应该会在每次打开抽屉时更新这些参数,但不会这样做,直到我关闭并重新打开应用程序时,才会更新页眉。
发布于 2015-06-18 11:20:59
在onCreate中,我需要定义下一段代码,以便能够实时更新导航抽屉的标题:
public class MainActivity extends AppCompatActivity implements DrawerLayout.DrawerListener {
private DrawerLayout drawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
drawerLayout.setDrawerListener(this);
...https://stackoverflow.com/questions/30912557
复制相似问题