Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-如何让Android应用程序在登录时提供用户名建议_Java_Android - Fatal编程技术网

Java Android-如何让Android应用程序在登录时提供用户名建议

Java Android-如何让Android应用程序在登录时提供用户名建议,java,android,Java,Android,当用户第二次登录时,如何让android应用程序从以前的登录中获得用户名建议 比如说,我使用凭据登录 用户名:tazho@stackflow.com 密码:1234 我希望android应用程序只保存用户名,并在下次我想登录时建议它,本质上是为每个使用该应用程序的用户保存用户名。我该怎么做 我读了一些关于将用户名保存在中以及在edittext上使用侦听器的内容。我完全不懂。任何关于如何进行的建议都将不胜感激。欢迎提供教程、示例和最佳实践的链接 我是android开发新手。谢谢,您必须为用户名使用

当用户第二次登录时,如何让android应用程序从以前的登录中获得用户名建议

比如说,我使用凭据登录

用户名:tazho@stackflow.com 密码:1234

我希望android应用程序只保存用户名,并在下次我想登录时建议它,本质上是为每个使用该应用程序的用户保存用户名。我该怎么做

我读了一些关于将用户名保存在中以及在edittext上使用侦听器的内容。我完全不懂。任何关于如何进行的建议都将不胜感激。欢迎提供教程、示例和最佳实践的链接


我是android开发新手。谢谢,您必须为用户名使用AUT完整文本视图……

您可以使用
AccountManager
来使用显示建议,即使是在用户首次尝试登录时。请参阅nickbutcher的plaid中的一个非常好的示例,将每个用户名保存到SQLite数据库中

Android SQLite数据库教程:

查询完成后,数据库将获取所有保存的用户名,然后将其设置为自动完成文本视图。它将显示该建议


此处的“自动完成文本视图”教程:

正如您所要求的示例,这是您实现的正确方法。您可以第一次在本地保存登录详细信息,当同一用户登录下一个会话时,您可以直接通过登录屏幕。只有当他从应用程序注销时,您才能清除共享页面用户的偏好

1.单击按钮保存值

SharedPreferences sharedPref = getSharedPreferences("YOUR PREF NAME", Context.MODE_PRIVATE);
sharedPref.edit().putString("VALUE_NAME_KEY", your_name_value).apply();
2.从restring应用程序上的首选项还原值

sharedPref.getString("VALUE_NAME_KEY", null);
如果您不使用活动,请使用上下文来使用首选项

SharedPreferences sharedPref = context.getSharedPreferences("YOUR PREF NAME", Context.MODE_PRIVATE);
3.从注销的首选项中删除详细信息

sharedPref.edit().remove("VALUE_NAME_KEY").commit();

您可以使用SharedReferences来实现这一点

public String getHistoryUsername(){
SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String username = sPrefs.getString("username", "");
if(username.length()==0)
   //It's first time you are logging in
    return "";
else
  {
    //you have username from history
    return username;
   }
 }
此方法可用于在活动启动时获取用户名,并设置edittext字段值

点击登录时,将历史记录更新为:

public void updateUsernameHistory(String name){
 SharedPreferences sPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
 SharedPreferences.Editor edit = sPrefs.edit();
 edit.putString("username", name);
 edit.commit();
} 

这就是我的工作。我在用户名上使用了一个
AutoCompleteTextView
小部件。然后我在数据库类中创建了一个方法

public String[] SelectAllData() {
     try {
         String arrData[] = null;
         SQLiteDatabase db;
         db = this.getReadableDatabase(); // Read Data

        String strSQL = "SELECT " + KEY_PHONENUMBER + " FROM " + TABLE_USER;
         Cursor cursor = db.rawQuery(strSQL, null);

         if (cursor != null) {
             if (cursor.moveToFirst()) {
                 arrData = new String[cursor.getCount()];
                 /***
                  *  [x] = Name
                  */
                 int i = 0;
                 do {
                     arrData[i] = cursor.getString(0);
                     i++;
                 } while (cursor.moveToNext());
             }
         }
         cursor.close();
         return arrData;

     } catch (Exception e) {
         return null;
     }
 }
然后在引用
activity\u main.xml
mainActivity.java中,我创建了另一个方法,从数据库类调用
SelectAllData
方法

my_DB = new my_DB(this);
final String[] myData = my_DB.SelectAllData();

     ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, myData);

为什么每次都需要用户名建议?你可以将用户名存储在首选项中,下次登录时再次使用它否?嗯,“共享首选项”这句话,请再次为我总结它的工作原理,因为我真的想知道。我知道有谷歌,但我想听听你的意见。我为你发布了一个我的例子。希望它能帮助你。如何通过自动完成文本视图存储用户名?你必须为自动完成文本视图创建一个适配器类..并添加textwatcher来实现用户名建议。在步骤1:
SharedRef.edit()中的
your_name_值
).putString(“值\名称\键”,即您的\名称\值).apply()
是我的
username
edittext小部件变量,或者我必须声明一个新变量并为其命名
your_name\u value
?your_name\u value是用户将要在编辑文本中输入的值。您可以像editTextObject.getText().toString()一样获取它,在步骤1、2和3中我将代码放在哪里?它们是否都应该在my
MainActivity
?当用户第二次登录时,需要执行步骤2。您需要检查其中存在的值…如果存在值,则跳过登录,或者显示第一步…例如,当您有一个注销按钮或其他东西时,要求用户登录步骤3是必需的…例如,当用户注销您的应用程序时,您必须清除首选项所有这些方法都应该在my
MainActivity
中,我假设?是的,相同的活动,您正在登录。这是对我有效的答案,@Bhuvanesh这和我建议你的一样。
Username = (AutoCompleteTextView) findViewById(R.id.username);
Username.setAdapter(adapter);