Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法在主活动中使用导航视图在导航抽屉中设置文本视图。Xamarin Android

无法在主活动中使用导航视图在导航抽屉中设置文本视图。Xamarin Android
EN

Stack Overflow用户
提问于 2018-02-15 12:41:35
回答 1查看 686关注 0票数 2

这是我设置所有图标、菜单、抽屉和导航视图的主要活动。在这里,我通过将nav_header充气到视图中并设置文本视图来设置另一个视图,但我仍然无法在导航抽屉中更改文本视图。MainActivity

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using Android.App;
using Android.Content.PM;
using Android.OS;
using Android.Support.V4.Widget;
using Android.Views;    
using RoutineApp.Fragments;
using Android.Support.V7.App;
using Android.Support.V4.View;
using Android.Support.Design.Widget;
using Android.Widget;
using Android.Content;

namespace RoutineApp
{
    [Activity(Label = "@string/app_name", MainLauncher = true, LaunchMode = LaunchMode.SingleTop)]
    public class MainActivity : AppCompatActivity
    {

        DrawerLayout drawerLayout;
        NavigationView navigationView;    
        IMenuItem previousItem;
        TextView UserNameTxt;
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.main);
            var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            if (toolbar != null)
            {
                SetSupportActionBar(toolbar);
                SupportActionBar.SetDisplayHomeAsUpEnabled(true);
                SupportActionBar.SetHomeButtonEnabled(true);
            }    
            drawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);  
            SupportActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu);
            navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
            LayoutInflater inflater = (LayoutInflater)GetSystemService(Context.LayoutInflaterService);
            View view = inflater.Inflate(Resource.Layout.nav_header, null);
            UserNameTxt = view.FindViewById<TextView>(Resource.Id.UserNameTxt);
            UserNameTxt.Text = "Yousuf";
            navigationView.NavigationItemSelected += (sender, e) =>
            {
                if (previousItem != null)
                    previousItem.SetChecked(false);

                navigationView.SetCheckedItem(e.MenuItem.ItemId);    
                previousItem = e.MenuItem;    
                switch (e.MenuItem.ItemId)
                {
                    case Resource.Id.nav_home_1:
                        ListItemClicked(0);
                        break;

                    case Resource.Id.nav_home_2:
                        ListItemClicked(1);
                        break;
                }
                drawerLayout.CloseDrawers();
            };
            if (savedInstanceState == null)
            {
                navigationView.SetCheckedItem(Resource.Id.nav_home_1);
                ListItemClicked(0);
            }
        }
        int oldPosition = -1;
        private void ListItemClicked(int position)
        {
            if (position == oldPosition)
                return;
            oldPosition = position;
            Fragment fragment = null;
            switch (position)
            {
                case 0:
                    fragment = Fragment1.NewInstance();
                    break;
            }
            FragmentTransaction fragmentTx = this.FragmentManager.BeginTransaction();
            fragmentTx.Replace(Resource.Id.content_frame, fragment);
            fragmentTx.AddToBackStack(null);
            fragmentTx.Commit();
        }
        public override bool OnOptionsItemSelected(IMenuItem item)
        {
            switch (item.ItemId)
            {
                case Android.Resource.Id.Home:
                    drawerLayout.OpenDrawer(GravityCompat.Start);
                    return true;
            }
            return base.OnOptionsItemSelected(item);
        }
    }
}

这是设置导航和抽屉的主布局轴,标题在导航中被调用。main.axml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<!-- The main content view -->

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <include
                android:id="@+id/toolbar"
                layout="@layout/toolbar"
                app:layout_scrollFlags="scroll|enterAlways" />

        </android.support.design.widget.AppBarLayout>

        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/toolbar_layout" />
    </RelativeLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header"
        app:menu="@menu/nav_menu" />

</android.support.v4.widget.DrawerLayout>

这是我在导航视图中调用的nav_header,它包含我试图更改的主活动的文本视图。nav_header.axml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <TextView
        android:id="@+id/UserNameTxt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Username"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
</LinearLayout>

名字不改,请帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-15 18:38:43

您可以使用LayoutInflator来膨胀来自nav_header的视图,这意味着您从nav_header.xml创建了一个完全新的视图,并更改了它的子文本视图的文本,并且在您的活动中没有使用这个新视图。因此,原始活动的文本不会改变。

解决方案:修改您的活动代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    SetContentView(Resource.Layout.main);
    var toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
    if (toolbar != null)
    {
        SetSupportActionBar(toolbar);
        SupportActionBar.SetDisplayHomeAsUpEnabled(true);
        SupportActionBar.SetHomeButtonEnabled(true);
    }    
    drawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);                SupportActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu);
    navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
    //LayoutInflater inflater = (LayoutInflater)GetSystemService(Context.LayoutInflaterService);
    //View view = inflater.Inflate(Resource.Layout.nav_header, null);
    //UserNameTxt = view.FindViewById<TextView>(Resource.Id.UserNameTxt);
    //UserNameTxt.Text = "Yousuf";
    LinearLayout header=(LinearLayout)navigationView.GetHeaderView(0);
    UserNameTxt = header.FindViewById<TextView>(Resource.Id.UserNameTxt);
    UserNameTxt.Text = "Yousuf";
    ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48815905

复制
相关文章
android一个弹出菜单的动画(二)「建议收藏」
代码:http://download.csdn.net/detail/baidu_nod/7731115
全栈程序员站长
2022/07/08
5200
android一个弹出菜单的动画(二)「建议收藏」
jquery导航菜单「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159432.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/17
5.8K0
jquery导航菜单「建议收藏」
Android学习之菜单
android中包含多种菜单,本例带来的是选项菜单和上下文菜单。 1.选项菜单 在android中,开发者可以在xml文档中部署所要添加的菜单,在后台调用即可。 1 <menu xmlns:android="http://schemas.android.com/apk/res/android" > 2 3 <item 4 android:id="@+id/action_add" 5 android:title="添加" 6 android
水击三千
2018/02/27
9420
Android-SubMenu选项菜单和子菜单
简介: SubMenu:代表一个子菜单,包含1~N个MenuItem 实现效果: 具体实现方法: 主活动 MainActivity: public class MainActivity extends AppCompatActivity { //定义 “字体大小” 菜单项的标识 final int FONT_10 = 0x111; final int FONT_12 = 0x112; final int FONT_14 = 0x113; final int FON
圆号本昊
2021/09/24
1.3K0
Android-SubMenu选项菜单和子菜单
Android-菜单关联activity
有时,程序需要单击某个个菜单来实现启动ing其他的activity(或者service)
圆号本昊
2021/09/24
6230
Android-菜单关联activity
Android 侧滑抽屉菜单
  滑动菜单相信都不会陌生,你可能见过很多这样的文章,但我的文章会给你不一样的阅读和操作体验。
晨曦_LLW
2021/03/23
4K0
Android 侧滑抽屉菜单
Android菜单 布局 表格布局
多用于静态菜单页面 xml代码 代码内带详细解释 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="h
圆号本昊
2021/09/24
1.6K0
Android菜单 布局 表格布局
菜单权限表sql语句「建议收藏」
select m.* from t_menu m where m.state = ‘1’ and ((menu_type = 1 and exists (select 1 from v_user_menu b where m.menu_id = b.menu_id and b.sys_id = ‘3000’)) or (m.menu_type = 0 and exists (select 1 from v_user_menu b where m.menu_id = b.parent_id and b.sys_id = ‘3000’))) start with m.parent_id = ‘0’ connect by prior m.menu_id = m.parent_id order siblings by menu_order
全栈程序员站长
2022/11/16
6570
android 多条件筛选菜单效果
http://blog.csdn.net/u011733020/article/details/51002746
bear_fish
2018/09/20
3.5K0
android 多条件筛选菜单效果
Android仿qq侧滑菜单
我们经常能看到各种app中都有应用侧滑菜单(SlidingMenu),效果很好的一种显示方式,今天我就向大家展示可以说是很简单就能实现和qq的侧滑菜单很相似的效果。现在侧滑菜单的框架在github上也有很多,有兴趣的可以去搜一下,今天我就给大家展示一个简单的仿qq侧滑菜单的例子。
earthchen
2020/09/24
1.2K0
android下拉五级菜单联动
本人是一个不擅长Android的开发的,但是这几天在做联通的一个服务器配件管理系统,做完B/S的又要写C/S的,老板要求没办法。在做的过程中遇到了一个下拉菜单联动的问题,以前没做过,突然做还真有点不知所措了,在网上找了一大堆发现数据都是本地的应该构造好了,没卵用,不过也给了我很多想发,一开始想到用树去解决,可是每个树的节点个数不知道,要是动态创建就会很麻烦。最后在自己的努力下来构造JSON数据格式,其实弄明白感觉很简单,就是并保存你的上一级是谁,你的下一级是谁就可以了,但是数据库做的表没有结构可言很难构造出来有用的数据结构。
张泽旭
2018/12/10
2.5K0
android下拉五级菜单联动
css实现导航菜单下拉效果「建议收藏」
效果如下图,现在什么样式也没有,我们需要对HTML进行一些样式上的调整让其看起来好看一下。
全栈程序员站长
2022/09/19
2.8K0
css实现导航菜单下拉效果「建议收藏」
仿path菜单button的实现「建议收藏」
path刚出来时。其菜单button也算是让大多数人感到了惊艳,如今看来事实上是非常easy的就是动画的结合。
全栈程序员站长
2022/07/10
4570
仿path菜单button的实现「建议收藏」
点击加载更多

相似问题

芹菜-如何使用多个队列?

12

芹菜守护进程的多个队列

17

在芹菜中,使用多个队列是否对性能有重大影响?

10

Django芹菜多个工作进程和多个队列

10

在芹菜中排列多个队列的优先顺序?

38
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文