我想從共享首選項獲取值,它返回null。共享首選項值由asynctask設置。我在asynctask裏面測試了它,在烘烤面板中打印stord值,它工作正常,但是問題是當我嘗試通過單擊buttonRegister來嘗試檢索asynctask之外的值時,它顯示爲null。 logcat中沒有顯示錯誤。從asynctask檢索共享首選項值
活動的代碼:
package com.example.mohalogin;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Properties;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class RegisterActivity extends Activity {
\t
\t private EditText editTextName;
private EditText editTextUsername;
private EditText editTextPassword;
private EditText editTextEmail;
private Button buttonRegister;
private Button buttonLogin;
//private Button gmail,yahoo;
Context context;
private SharedPreferences sharedpreferences;
\t public static final String MyPREFERENCES = "MyPreferences" ;
\t public static final String RegisResult = "result";
private static final String REGISTER_URL = "xxxxxxxxxx"; //fake data
\t @Override
\t protected void onCreate(Bundle savedInstanceState) {
\t \t super.onCreate(savedInstanceState);
\t \t setContentView(R.layout.activity_register);
\t \t
\t \t editTextName = (EditText) findViewById(R.id.editTextName);
editTextUsername = (EditText) findViewById(R.id.editTextUserName);
editTextPassword = (EditText) findViewById(R.id.editTextPassword);
editTextEmail = (EditText) findViewById(R.id.editTextEmail);
buttonRegister = (Button) findViewById(R.id.buttonRegister);
buttonLogin = (Button) findViewById(R.id.buttonLogin);
buttonRegister.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0){
\t registerUser();
\t
\t sharedpreferences=getApplicationContext().getSharedPreferences("MyPrefs", getApplicationContext().MODE_PRIVATE);
\t
\t buttonLogin.setText(sharedpreferences.getString("result","")); //testing by printing the value in the button
\t
}
});
/*buttonLogin.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0){
\t
\t startActivity(new Intent(RegisterActivity.this, LoginActivity.class));
}
});*/
\t }
\t
private void registerUser() {
\t \t
\t \t String name = editTextName.getText().toString().trim().toLowerCase();
String username = editTextUsername.getText().toString().trim().toLowerCase();
String password = editTextPassword.getText().toString().trim().toLowerCase();
String email = editTextEmail.getText().toString().trim().toLowerCase();
register(name,username,password,email); \t
\t }
\t
\t private void register(String name, String username, String password, String email) {
class RegisterUser extends AsyncTask<String, Void, String> {
\t
\t ProgressDialog loading;
RegisterUserClass ruc = new RegisterUserClass();
private Context context2;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(RegisterActivity.this, "Please Wait","Registering new user", true, false);
}
\t \t \t @Override
\t \t \t protected String doInBackground(String... params) {
\t \t \t \t
\t \t \t \t HashMap<String, String> data = new HashMap<String,String>();
data.put("name",params[0]);
data.put("username",params[1]);
data.put("password",params[2]);
data.put("email",params[3]);
String result = ruc.sendPostRequest(REGISTER_URL,data);
\t \t \t \t
return result;
\t \t \t \t
\t \t \t }
\t \t \t
\t \t \t @Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
sharedpreferences = context2.getSharedPreferences(MyPREFERENCES, context2.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(RegisResult, s);
\t \t \t \t editor.commit();
Toast.makeText(getApplicationContext(),sharedpreferences.getString("result",""), Toast.LENGTH_LONG).show();
} \t
\t \t \t
\t \t \t public RegisterUser(Context context2)
\t \t \t {
\t \t \t \t this.context2=context2;
\t \t \t }
}
RegisterUser ru = new RegisterUser(getApplicationContext());
ru.execute(name, username, password, email);
}
}
謝謝您,先生,它的工作:D – akshay270494
很高興我可以幫助! – guychu