【问题标题】:Shared preferences user name共享首选项用户名
【发布时间】:2015-10-11 11:53:30
【问题描述】:

我有一个应用程序,我希望能够让用户自定义设置他们的用户名、电子邮件地址和图片到首选项菜单中的 navDrawer。我不是 100% 确定如何做到这一点。我不确定如何设置侦听器以从首选项屏幕获取密钥。此外,由于这些值具有 id,用户可以根据他们输入的偏好替换它们吗?

任何帮助都会很棒。

【问题讨论】:

    标签: java android xml editor sharedpreferences


    【解决方案1】:

    由于您希望这些值在每次使用应用时都保持不变,因此请使用 SharedPreferences 来保存这些值。然后在您的 navDrawer 适配器中检索并设置它们

     SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(YourActivity.this);
        pref.edit().putString("name", nameEditText.getText().toString()).commit(); 
    

    要检索...

    pref.getString("name", defaultValue);
    

    使用相同键的任何附加“putString”都会覆盖数据。

    希望这能回答您的问题。如果没有,我可以提供进一步的帮助。 documentation 也会为您提供帮助。

    编辑请参阅下面的 cmets。

    ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout,R.drawable.ic_playlist, R.string.drawer_open, R.string.drawer_close) {
            @Override
            public void onDrawerStateChanged(int newState) {
                super.onDrawerStateChanged(newState);
            }
    
            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
            }
    
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
            }
    }
    

    【讨论】:

    • 完全不确定该放在哪里。我已经有一个设置片段设置,其中调用了我的共享首选项。我的问题是试图让编辑文本首选项替换导航抽屉中已经存在的虚拟文本。
    • @JorellRutledge 我编辑了我的帖子以包含一个drawerToggle 监听器。这就是你想要的。
    • 不幸的是,这不起作用并在启动时使应用程序崩溃。也许我不清楚我的解释或需求。稍后我会尝试发布一些代码。
    • 是的,一些额外的解释,我可以进一步帮助你!
    • 好的,我在代码(MainActivity)中有这个: TextView userName = (TextView) findViewById(R.id.user_name); preference.edit().putString("your_name", userName.getText().to string()).commit();但是该应用程序在启动时崩溃。 Logcat 说 java.lang.CharSequence android.widget.TextView.get text() '在一个空对象引用上。
    猜你喜欢
    • 2012-09-03
    • 2012-04-04
    • 2012-07-07
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    相关资源
    最近更新 更多