我正在做一个Android应用程序,可以在下次用户想要使用此应用程序时保存密码。当我尝试运行我的应用程序时,输入了密码,但有一个弹出窗口表示应用程序已停止?
package com.wheresmyphone;
import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class Check extends Activity {
String StringPreference;
SharedPreferences preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_check);
Button b = (Button)findViewById(R.id.Button01);
final EditText preferences = (EditText)findViewById(R.id.txt12345);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
EditText sharedPreferences = (EditText)findViewById(R.id.txt12345);
String StringPreference = preferences.getText().toString();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.check, menu);
return true;
}
/**
* Method used to get Shared Preferences */
public SharedPreferences getPreferences()
{
return getSharedPreferences(null, 0);
}
/**
* Method used to save Preferences */
public void savePreferences(String key, String value)
{
SharedPreferences sharedPreferences = getPreferences();
SharedPreferences.Editor editor = preferences.edit();
String StringPreference = sharedPreferences.toString();
editor.putString("sharedString", StringPreference);
editor.commit();
}
/**
* Method used to load Preferences */
public String loadPreferences(String key)
{
try {
SharedPreferences sharedPreferences = getPreferences();
String strSavedMemo = sharedPreferences.getString(key, "");
return strSavedMemo;
} catch (NullPointerException nullPointerException)
{
Log.e("Error caused at TelaSketchUtin loadPreferences method",
">======>" + nullPointerException);
return null;
}
}
/**
* Method used to delete Preferences */
public boolean deletePreferences(String key)
{
SharedPreferences.Editor editor=getPreferences().edit();
editor.remove(key).commit();
return false;
}
{
}
}
答案 0 :(得分:0)
我不确定,但我认为你现在错过了一些东西:
return getSharedPreferences(null, 0);
看这里:
参数 命名
所需的偏好文件。如果此名称的首选项文件不存在,则在检索编辑器(SharedPreferences.edit())然后提交更改(Editor.commit())时将创建该文件。
如果将“name”设置为null,则无法创建文件。
可能是解决方案,将其添加到顶部
private final String KEY_SHAREDPREFS = "tmpsharedprefs";
然后使用它
return getSharedPreferences(KEY_SHAREDPREFS, 0);
答案 1 :(得分:0)
看到你正试图从偏好中获取字符串,首先你必须从edittext获取密码,如此代码
EditText passwordText = (EditText)findViewById(R.id.txt12345);
String password = passwordText.getText().toString();
然后将此密码存储在共享首选项中
答案 2 :(得分:0)
使用SharedPreferences,
保存:
SharedPreferences settings;
SharedPreferences.Editor editor;
public static final String PREFS_NAME = "app_pref";
public static final String KEY_p_id = "KEY_test";
settings = getSharedPreferences(PREFS_NAME, 0);
editor = settings.edit();
editor.putString(Login_screen.KEY_test, values.get(0));
editor.commit();
删除:
editor.remove("KEY_test").commit();
获取:
settings = getSharedPreferences(PREFS_NAME, 0);
String TestId = settings.getString("KEY_test", null);