在Android中访问菜单XML文件中的全局变量

Actaram

我正在创建一个应用程序,用户必须在其中连接自己。我正在尝试实现一个菜单,其中第一个项目文本将是所连接用户的名称,并且一旦单击,它将带到用户个人资料。为了存储连接的用户信息,我创建了自己的android.app.Application子类,其中包含连接的用户:

private User currUser;

public User getCurrUser() {
    return this.currUser;
}

public void setCurrUser(User currUser) {
    this.currUser = currUser;
}

我想知道如何在菜单XML文件中访问此全局变量,以使第一项的标题为连接的用户名?从逻辑上讲,我会做这样的事情:

<item android:id="@+id/action_profil" android:title=(MyApp)this.getApplication().getCurrUser().getM_UserName()
    android:orderInCategory="100" app:showAsAction="never" />

但是我知道这在XML中不可行。我该怎么做?也许,我应该在其他地方重新命名该项目?我找到了一种解决方案,可以在onCreateOptionsMenu活动中更改标题,但是有比在每个包含菜单的活动中更改项目标题更好的方法吗?

编辑-这是我的XML文件

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.aramjeremie.liftm8.HomeActivity">

    <item android:id="@+id/action_profil" android:title="Mon_Nom"
        android:orderInCategory="100" app:showAsAction="never" />

    <item android:id="@+id/action_home" android:title="@string/action_home"
        android:orderInCategory="100" app:showAsAction="never" />

    <item android:id="@+id/action_notifications" android:title="@string/action_notifications"
        android:orderInCategory="100" app:showAsAction="never" />

    <item android:id="@+id/action_passenger" android:title="@string/action_passenger"
        android:orderInCategory="100" app:showAsAction="never" />

    <item android:id="@+id/action_driver" android:title="@string/action_driver"
        android:orderInCategory="100" app:showAsAction="never" />

    <item android:id="@+id/action_search" android:title="@string/action_search"
        android:orderInCategory="100" app:showAsAction="never" />

    <item android:id="@+id/action_settings" android:title="@string/action_settings"
        android:orderInCategory="100" app:showAsAction="never" />

    <item android:id="@+id/action_signOut" android:title="@string/action_signOut"
        android:orderInCategory="100" app:showAsAction="never" />
</menu>

谢谢。

uo

定义的子类Activity,并覆盖onPrepareOptionsMenu设置轮廓项目的标题为当前用户的用户名。

public class MyActivity extends Activity {

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        CharSequence currentUser = ((MyApp) this.getApplication()).getCurrUser().getM_UserName();
        MenuItem profileMenuItem = menu.findItem(R.id.action_profil);
        if(profileMenuItem != null) {
           profileMenuItem.setTitle(currentUser);
        }
        return super.onPrepareOptionsMenu(menu);
    }
}

然后,具有此菜单的每个活动都应扩展MyActivity

如果您使用的是兼容性库,MyActivity则应扩展FragmentActivityActionBarActivity

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android中访问菜单XML文件中的全局变量

来自分类Dev

如何从Node中的required()文件访问全局变量?

来自分类Dev

如何在Kivy文件中访问全局变量?

来自分类Dev

在.m文件中作为全局变量访问结构

来自分类Dev

如何从Node中的required()文件访问全局变量?

来自分类Dev

在 h 文件中声明的全局变量和对它们的访问

来自分类Dev

在Swift中访问全局变量

来自分类Dev

如何访问模板中的全局变量?

来自分类Dev

汇编:访问{{parseJSON}}中的全局变量

来自分类Dev

在本地环境中访问全局变量

来自分类Dev

访问lua中的全局变量

来自分类Dev

汇编:访问{{parseJSON}}中的全局变量

来自分类Dev

多个文件中的C ++全局变量

来自分类Dev

多个文件中的Python全局变量

来自分类Dev

头文件中的全局变量

来自分类Dev

多个文件中的Python全局变量

来自分类Dev

访问另一个 .cpp 文件中的 .cpp 文件中定义的全局变量

来自分类Dev

在CSharpScript中的脚本化类中访问全局变量

来自分类Dev

无法访问 citrus-context.xml 中的全局变量

来自分类Dev

如何制作全局变量或能够在其他文件中访问它

来自分类Dev

如何在Python中访问全局变量?

来自分类Dev

Tcl线程:如何访问线程中的全局变量

来自分类Dev

如何动态访问Node中的全局变量?

来自分类Dev

如何在r函数中访问全局变量

来自分类Dev

AngularJS:在html模板中访问全局变量

来自分类Dev

如何在子程序中访问全局变量

来自分类Dev

在模板中访问jinja2全局变量

来自分类Dev

在Laravel应用程序中访问全局变量的问题

来自分类Dev

在飞镖/颤振中访问全局变量