Java Android-如何让Android应用程序在登录时提供用户名建议
当用户第二次登录时,如何让android应用程序从以前的登录中获得用户名建议 比如说,我使用凭据登录 用户名:tazho@stackflow.com 密码:1234 我希望android应用程序只保存用户名,并在下次我想登录时建议它,本质上是为每个使用该应用程序的用户保存用户名。我该怎么做 我读了一些关于将用户名保存在中以及在edittext上使用侦听器的内容。我完全不懂。任何关于如何进行的建议都将不胜感激。欢迎提供教程、示例和最佳实践的链接Java Android-如何让Android应用程序在登录时提供用户名建议,java,android,Java,Android,当用户第二次登录时,如何让android应用程序从以前的登录中获得用户名建议 比如说,我使用凭据登录 用户名:tazho@stackflow.com 密码:1234 我希望android应用程序只保存用户名,并在下次我想登录时建议它,本质上是为每个使用该应用程序的用户保存用户名。我该怎么做 我读了一些关于将用户名保存在中以及在edittext上使用侦听器的内容。我完全不懂。任何关于如何进行的建议都将不胜感激。欢迎提供教程、示例和最佳实践的链接 我是android开发新手。谢谢,您必须为用户名使用
我是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中我将代码放在哪里?它们是否都应该在myMainActivity
?当用户第二次登录时,需要执行步骤2。您需要检查其中存在的值…如果存在值,则跳过登录,或者显示第一步…例如,当您有一个注销按钮或其他东西时,要求用户登录步骤3是必需的…例如,当用户注销您的应用程序时,您必须清除首选项所有这些方法都应该在myMainActivity
中,我假设?是的,相同的活动,您正在登录。这是对我有效的答案,@Bhuvanesh这和我建议你的一样。
Username = (AutoCompleteTextView) findViewById(R.id.username);
Username.setAdapter(adapter);