从另一个布局更改TextView

丹尼尔·金(Daniel Kng)

对于我的最新项目在Android中,我需要设置TextView这是在R.layout.header(含量为我NavDrawer,见下截图)从我的MainActivity,它使用的activity_main布局。

为此,我调用我的SetUsername()方法,该方法包含以下代码以从“首选项”中获取用户名:

private void SetUsername(){
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    String userNamePref = preferences.getString("username", "DEFAULT");
    //Change the Username in R.layout.header
}

要设置我首先要做的用户名

TextView username = (TextView)findViewById(R.id.usernameHeader);
username.setText(userNamePref);

这没有用-显然因为R.id.usernameHeaderR.layout.header中

所以我用了这个:

setContentView(R.layout.header);
TextView username = (TextView)findViewById(R.id.usernameHeader);
username.setText(userNamePref);

正确更改了NavDrawer中的Text,但是activty_main布局不见了,所以我setContentView(R.layout.activity_main)在函数的底部添加了内容。一切都按预期进行,但文本没有更改。

为了获得更好的主意,我制作了一个屏幕截图,以便您可以看到我想要更改的内容: 导航抽屉

我的版式:

activity_main.xml:

    <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/bg_screen3">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:id="@+id/linearLayout">

        <ImageView
            android:layout_width="@dimen/img_width_height"
            android:layout_height="@dimen/img_width_height"
            android:src="@drawable/ic_assessment_white_36dp"/>

        <TextView
            android:id="@+id/stundenplanText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/slide_2_title"
            android:textColor="@android:color/white"
            android:textSize="@dimen/slide_title"
            android:textStyle="bold" />

        <Spinner
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/class_spinner"
            android:layout_below="@+id/linearLayout"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/button_start"
            android:id="@+id/okay_button"
            android:elevation="5dp"
            android:layout_below="@+id/linearLayout"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="39dp">
        </Button>
    </LinearLayout>
    <include
        android:id="@+id/tool_bar"
        layout="@layout/toolbar">
    </include>
</RelativeLayout>
    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_gravity="start"
        app:headerLayout="@layout/header"
        app:menu="@menu/drawer"
        />
</android.support.v4.widget.DrawerLayout>

标头:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="190dp"
    android:background="@color/bg_screen3"
    android:orientation="vertical"
    android:id="@+id/headerRelative">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="BT-Ahaus"
        android:textSize="14sp"
        android:textColor="#FFF"
        android:textStyle="bold"
        android:gravity="left"
        android:paddingBottom="4dp"
        android:id="@+id/usernameHeader"
        android:layout_above="@+id/email"
        android:layout_alignParentStart="true"
        android:layout_marginStart="30dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="[email protected]"
        android:id="@+id/email"
        android:gravity="left"
        android:layout_marginBottom="8dp"
        android:textSize="14sp"
        android:textColor="#fff"
        android:layout_alignParentBottom="true"
        android:layout_alignLeft="@+id/usernameHeader"
        android:layout_alignStart="@+id/usernameHeader" />

    <ImageView
        android:id="@+id/profile_image"
        android:layout_width="150dp"
        android:layout_height="100dp"
        android:src="@drawable/bt_ahaus"
        android:layout_centerVertical="true"
        android:layout_alignEnd="@+id/email" />

</RelativeLayout>

工具栏:

  <?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/bg_screen3"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    android:elevation="4dp">

</android.support.v7.widget.Toolbar>
Earthw0rmjim

ContentView完全不需要切换

View在标题的布局上查找,需要调用findViewById该特定布局的实例。

代替以下内容:

TextView username = (TextView) findViewById(R.id.usernameHeader);

您应该执行以下操作:

NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view);
View header = navigationView.getHeaderView(0);
TextView username = (TextView) header.findViewById(R.id.usernameHeader);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从另一个活动更改布局背景?

来自分类Dev

从另一个布局更改屏幕

来自分类Dev

Android从另一个活动更改TextView

来自分类Dev

Android相对布局,在另一个textview下方将一个textview右对齐

来自分类Dev

动态更改后的布局会覆盖另一个布局

来自分类Dev

Android textfield和textview从布局到另一个

来自分类Dev

在相对布局中,如何在另一个textview下方显示运行时textview?

来自分类Dev

如何达到和更改另一个活动的布局元素?

来自分类Dev

如何在 ViewPager 中更改另一个布局的值

来自分类Dev

如何从另一个ViewController中的按钮更改单独的ViewController中的textView?

来自分类Dev

使用 EditText 更改另一个活动(后台)上的 TextView 值

来自分类Dev

为什么我不能以相对布局在另一个视图上方看到textView?

来自分类Dev

如果在另一个TextView中更改了文本,则TextView文本动画将重新启动

来自分类Dev

以编程方式在另一个布局之上添加一个布局

来自分类Dev

在另一个布局上设置一个布局

来自分类Dev

在中间切一个布局,然后在下面插入另一个布局

来自分类Dev

滚动时ListView覆盖另一个布局

来自分类Dev

如何从另一个模块调用xml布局

来自分类Dev

ScrollView在另一个布局Android之上

来自分类Dev

setText在另一个布局中

来自分类Dev

在另一个布局android中查看viewpager

来自分类Dev

将布局放在另一个居中的上方

来自分类Dev

访问另一个活动的布局Android

来自分类Dev

IE的另一个布局问题

来自分类Dev

将布局放在另一个之上

来自分类Dev

在另一个布局中获取 EditText 的值

来自分类Dev

从另一个类传递和设置TextView

来自分类Dev

从另一个片段访问Actionbar TextView

来自分类Dev

从另一个活动更新TextView

Related 相关文章

  1. 1

    如何从另一个活动更改布局背景?

  2. 2

    从另一个布局更改屏幕

  3. 3

    Android从另一个活动更改TextView

  4. 4

    Android相对布局,在另一个textview下方将一个textview右对齐

  5. 5

    动态更改后的布局会覆盖另一个布局

  6. 6

    Android textfield和textview从布局到另一个

  7. 7

    在相对布局中,如何在另一个textview下方显示运行时textview?

  8. 8

    如何达到和更改另一个活动的布局元素?

  9. 9

    如何在 ViewPager 中更改另一个布局的值

  10. 10

    如何从另一个ViewController中的按钮更改单独的ViewController中的textView?

  11. 11

    使用 EditText 更改另一个活动(后台)上的 TextView 值

  12. 12

    为什么我不能以相对布局在另一个视图上方看到textView?

  13. 13

    如果在另一个TextView中更改了文本,则TextView文本动画将重新启动

  14. 14

    以编程方式在另一个布局之上添加一个布局

  15. 15

    在另一个布局上设置一个布局

  16. 16

    在中间切一个布局,然后在下面插入另一个布局

  17. 17

    滚动时ListView覆盖另一个布局

  18. 18

    如何从另一个模块调用xml布局

  19. 19

    ScrollView在另一个布局Android之上

  20. 20

    setText在另一个布局中

  21. 21

    在另一个布局android中查看viewpager

  22. 22

    将布局放在另一个居中的上方

  23. 23

    访问另一个活动的布局Android

  24. 24

    IE的另一个布局问题

  25. 25

    将布局放在另一个之上

  26. 26

    在另一个布局中获取 EditText 的值

  27. 27

    从另一个类传递和设置TextView

  28. 28

    从另一个片段访问Actionbar TextView

  29. 29

    从另一个活动更新TextView

热门标签

归档