gpt4 book ai didi

android - 更新 Material 抽屉导航标题

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:09 26 4
gpt4 key购买 nike

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

enter image description here

所有这些信息,首先由用户在应用程序的第一次启动时定义,因此当 mainActivity 启动时,图像和名称被加载到标题中。但我让用户有机会在应用程序内修改这些内容。如果用户转到个人资料 fragment ,并选择一个新图像作为个人资料图片,或者如果他更改了名称,则此参数不会在抽屉导航的标题中更新,直到应用程序关闭并再次加载。

这是我在 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,但如顶部所示,我已经完成它以尝试实时更新 header 。这些实现了下一个方法:

@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 中相同的代码来加载个人资料图片和名称。这应该在每次打开抽屉时更新这些参数,但没有这样做,在我关闭并重新打开应用程序之前仍然不会更新标题。

最佳答案

在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);
...

关于android - 更新 Material 抽屉导航标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30912557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com