Java 共享引用不';不要保存我的用户名
SharedReferences没有保存我的用户名,而我没有收到任何错误。我已经用一些教程检查了我的方法,但我找不到哪里出了问题。我已经尝试了Java 共享引用不';不要保存我的用户名,java,android,sharedpreferences,Java,Android,Sharedpreferences,SharedReferences没有保存我的用户名,而我没有收到任何错误。我已经用一些教程检查了我的方法,但我找不到哪里出了问题。我已经尝试了commit()和'apply()'两种方法,尽管这在这里并没有什么区别 找到错误的人 我的代码: public class MainActivity extends AppCompatActivity implements AsyncResponse, View.OnClickListener { EditText etUsername, etPass
commit()
和'apply()'两种方法,尽管这在这里并没有什么区别
找到错误的人
我的代码:
public class MainActivity extends AppCompatActivity implements AsyncResponse, View.OnClickListener {
EditText etUsername, etPassword;
ImageButton btnLogin;
String username;
CheckBox ckbx_login;
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
etUsername = (EditText) findViewById(R.id.etUsername);
etPassword = (EditText) findViewById(R.id.etPassword);
btnLogin = (ImageButton) findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(this);
username = etUsername.getText().toString();
}
@Override
public void processFinish(String result) {
if(result.equals("success")) {
SharedPreferences.Editor editor = getApplicationContext().getSharedPreferences(PREFS_NAME,0).edit();
editor.putString("loginname",username);
editor.commit();
Intent in = new Intent(this, SubActivity.class);
String naam2= etUsername.getText().toString();
in.putExtra("naam2",naam2);
startActivity(in);
}
else{
Toast.makeText(this,"Inloggen mislukt", Toast.LENGTH_LONG).show();
}
}
@Override
public void onClick(View view) {
HashMap postData = new HashMap();
postData.put("mobile", "android");
postData.put("txtUsername", etUsername.getText().toString());
postData.put("txtPassword", etPassword.getText().toString());
PostResponseAsyncTask task = new PostResponseAsyncTask(this, postData);
task.execute("http://exemple.com");
}
第二类:
public static final String PREFS_NAME = "MyPrefsFile";
String name;
TextView msg_welcome;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_sub);
msg_welcome = (TextView) findViewById(R.id.txtVwelcome);
SharedPreferences prefs = this.getSharedPreferences(PREFS_NAME,0);
String restored_loginname = prefs.getString("loginname",null);
if(restored_loginname != null) {
name = prefs.getString("name", "No name defined");
}
Toast.makeText(getApplicationContext(),name,Toast.LENGTH_LONG).show();
}
public void scan(View View){
zXingScannerView = new ZXingScannerView(getApplicationContext());
setContentView(zXingScannerView);
zXingScannerView.setResultHandler(this);
zXingScannerView.startCamera();
}
@Override
protected void onPause() {
super.onPause();
zXingScannerView.stopCamera();
}
@Override
public void handleResult(Result result) {
// Toast.makeText(getApplicationContext(),result.getText(),Toast.LENGTH_LONG).show();
Intent i = new Intent(getApplicationContext(), Avt_form2.class);
String qrcode = result.getText();
i.putExtra("qrcode",qrcode);
startActivity(i);
}
顺便说一句,我知道Postdata已经过时了。我正在寻找替换它。问题:当前您在
onCreate
中获取username
的值,而此时您还没有用户输入
username = etUsername.getText().toString();
应在用户输入可用后执行,如在onclick
或
注意:
name
以前没有用于存储任何值,我想应该使用name2
问题:当前您在onCreate
中获取username
的值,但您没有用户输入
username = etUsername.getText().toString();
应在用户输入可用后执行,如在onclick
或
注意:
name
以前没有用于存储任何值,我想应该使用name2
在我看来,您在一个类中使用“loginname”,在另一个类中使用“name”。@codeMagic loginname是相同的,但是是的name
从未用于存储任何值,是的,这就是错误所在。谢谢在我看来,您在一个类中使用“loginname”,在另一个类中使用“name”。@codeMagic loginname是相同的,但yeahname
从未用于存储任何值,是的,这就是错误所在。谢谢就像你说的两件事都试过了,但还是给了我“没有名字定义”。真奇怪!但我理解你所说的,首先必须将数据插入editText。@Luigi stx是的,数据应该在editText中可用,但获取数据和保存数据的代码应该在数据可用后执行。请尝试使用name=prefs.getString(“name2”,“未定义名称”)代码>像你说的那样尝试了两种方法,但仍然给我“没有名字定义”。真奇怪!但我理解你所说的,首先必须将数据插入editText。@Luigi stx是的,数据应该在editText中可用,但获取数据和保存数据的代码应该在数据可用后执行。请尝试使用name=prefs.getString(“name2”,“未定义名称”)代码>