【发布时间】:2023-03-19 11:51:01
【问题描述】:
我正在尝试使用inflateHeaderView 在默认导航活动的导航标题中设置名称和电子邮件文本视图。但是,这会导致标头膨胀两次(一个在另一个上)。此外,电子邮件不会以编程方式出现在导航标题中。我对名称 textview 使用了相同的方法,并且效果很好。这是我的“HomeScreen.java”代码:
public class HomeScreen extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_screen);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("ThirdEye");
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
//programmatically setting navigation header name and email:
View navheaderView = navigationView.inflateHeaderView(R.layout.nav_header_home_screen);
TextView userName = (TextView) navheaderView.findViewById(R.id.navheader_name);
TextView userEmail = (TextView) navheaderView.findViewById(R.id.email);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplication());
String user_name = sharedPreferences.getString("username", "");
String user_email = sharedPreferences.getString("user_email","");
userName.setText(user_name);
userEmail.setText(user_email);
}
有什么帮助吗??
【问题讨论】:
-
请发布您的 nav_view xml 代码..
-
你确定你的用户邮箱不为空
-
@Tanimreja 我已经能够通过从导航视图 xml 中删除 "app:headerLayout="@layout/nav_header_home_screen" 来删除导航标题的重复性。我想我在 xml 中都膨胀了两次以及在java中......但电子邮件仍然无法正常工作..user_email 从另一个活动中的edittext视图中获取价值..
-
如果您在 xml 中添加了该标题视图,则无需在 java 代码中再次对其进行膨胀...确保您从 shardpreference 获取 user_email 的值...使用调试或 Log.e ..