【问题标题】:Navigation header inflating twice on programmatically setting textview导航标题在以编程方式设置 textview 时膨胀两次
【发布时间】: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 ..

标签: java android


【解决方案1】:

使用下面的代码。它对我有用。

View navheaderView =  navigationView.inflateHeaderView(R.layout.nav_header_home_screen);
navigationView.addHeaderView(navheaderView);

【讨论】:

    【解决方案2】:

    使用这个:

    View navheaderView = navigationView.getHeaderView(0);
    

    【讨论】:

      【解决方案3】:

      尝试这样做:

      查看 navheaderView = navigationView.inflateHeaderView(R.layout.nav_header_home_screen, false);

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 2019-07-06
      • 2011-08-17
      • 2020-05-31
      • 1970-01-01
      相关资源
      最近更新 更多