[英]How sharedPreferences in a spinner?
如何在下一個代碼中在微調器上使用 sharedPreferences ,我嘗試這樣做:
txtWebsite.setText(sharedPreferences.getString("defaultUploadWebsite", defaultUploadWebsite));
我試過這個:
spinner.setSelection(sharedPreferences.getString("userName", ""));
但它不適用於共享偏好。 這是一個活動主代碼,此代碼發送數據以更新 MySQL BD。
package com.websmithing.gpstracker;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import java.util.UUID;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
public class GpsTrackerActivity extends AppCompatActivity {
public static final String EmployeeNamearray = "EmpName";
public static final String EmployeeName = "EmpName";
public static final String EmployeeMailid = "EmpMailid";
public static final String JSON_ARRAY = "result";
private JSONArray result;
Spinner spinner;
String EmpName;
private ArrayList<String> arrayList;
TextView employeename,mailid;
private static final String TAG = "GpsTrackerActivity";
// use the websmithing defaultUploadWebsite for testing and then check your
// location with your browser here: https://www.websmithing.com/gpstracker/displaymap.php
private String defaultUploadWebsite;
private EditText txtUserName;
private Spinner spnrEmployee;
private EditText txtWebsite;
private Button trackingButton;
private boolean currentlyTracking;
private RadioGroup intervalRadioGroup;
private int intervalInMinutes = 1;
private AlarmManager alarmManager;
private Intent gpsTrackerIntent;
private PendingIntent pendingIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gps_tracker);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
defaultUploadWebsite = getString(R.string.default_upload_website);
txtWebsite = (EditText)findViewById(R.id.txtWebsite);
txtUserName = (EditText)findViewById(R.id.txtUserName);
spnrEmployee = (Spinner)findViewById(R.id.spnrEmployee);
intervalRadioGroup = (RadioGroup)findViewById(R.id.intervalRadioGroup);
trackingButton = (Button)findViewById(R.id.trackingButton);
txtUserName.setImeOptions(EditorInfo.IME_ACTION_DONE);
SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE);
currentlyTracking = sharedPreferences.getBoolean("currentlyTracking", false);
boolean firstTimeLoadingApp = sharedPreferences.getBoolean("firstTimeLoadingApp", true);
if (firstTimeLoadingApp) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("firstTimeLoadingApp", false);
editor.putString("appID", UUID.randomUUID().toString());
editor.apply();
}
intervalRadioGroup.setOnCheckedChangeListener(
new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
saveInterval();
}
});
trackingButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
trackLocation(view);
}
});
//SAAG
spinner= (Spinner) findViewById(R.id.spnrEmployee);
employeename= (TextView) findViewById(R.id.tvName);
mailid= (TextView) findViewById(R.id.tvmailid);
arrayList = new ArrayList<String>();
getdata();
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
//Setting the values to textviews for a selected item
employeename.setText("Name: "+getemployeeName(position));
mailid.setText("Mail Id: "+getmailid(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
employeename.setText("");
mailid.setText("");
}
});
}
private void getdata() {
StringRequest stringRequest = new StringRequest("http://190.147.68.37/ejemplos/datos.php",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
JSONObject j = null;
try {
j = new JSONObject(response);
result = j.getJSONArray(JSON_ARRAY);
empdetails(result);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
private void empdetails(JSONArray j) {
for (int i = 0; i < j.length(); i++) {
try {
JSONObject json = j.getJSONObject(i);
arrayList.add(json.getString(EmployeeNamearray));
} catch (JSONException e) {
e.printStackTrace();
}
}
// arrayList.add(0,"Select Employee");
spinner.setAdapter(new ArrayAdapter<String>(GpsTrackerActivity.this, android.R.layout.simple_spinner_dropdown_item, arrayList));
}
//Method to get student name of a particular position
private String getemployeeName(int position){
String name="";
try {
//Getting object of given index
JSONObject json = result.getJSONObject(position);
//Fetching name from that object
name = json.getString( EmployeeName);
} catch (JSONException e) {
e.printStackTrace();
}
//Returning the name
return name;
}
//Doing the same with this method as we did with getName()
private String getmailid(int position){
String mailid="";
try {
JSONObject json = result.getJSONObject(position);
mailid = json.getString( EmployeeMailid);
} catch (JSONException e) {
e.printStackTrace();
}
return mailid;
}
private void saveInterval() {
if (currentlyTracking) {
Toast.makeText(getApplicationContext(), R.string.user_needs_to_restart_tracking, Toast.LENGTH_LONG).show();
}
SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
switch (intervalRadioGroup.getCheckedRadioButtonId()) {
case R.id.i1:
editor.putInt("intervalInMinutes", 1);
break;
case R.id.i5:
editor.putInt("intervalInMinutes", 5);
break;
case R.id.i15:
editor.putInt("intervalInMinutes", 15);
break;
}
editor.apply();
}
private void startAlarmManager() {
Log.d(TAG, "startAlarmManager");
Context context = getBaseContext();
alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
gpsTrackerIntent = new Intent(context, GpsTrackerAlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, 0, gpsTrackerIntent, 0);
SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE);
intervalInMinutes = sharedPreferences.getInt("intervalInMinutes", 1);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime(),
intervalInMinutes * 60000, // 60000 = 1 minute
pendingIntent);
}
private void cancelAlarmManager() {
Log.d(TAG, "cancelAlarmManager");
Context context = getBaseContext();
Intent gpsTrackerIntent = new Intent(context, GpsTrackerAlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, gpsTrackerIntent, 0);
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
}
// called when trackingButton is tapped
protected void trackLocation(View v) {
SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
if (!saveUserSettings()) {
return;
}
if (!checkIfGooglePlayEnabled()) {
return;
}
if (currentlyTracking) {
cancelAlarmManager();
currentlyTracking = false;
editor.putBoolean("currentlyTracking", false);
editor.putString("sessionID", "");
} else {
startAlarmManager();
currentlyTracking = true;
editor.putBoolean("currentlyTracking", true);
editor.putFloat("totalDistanceInMeters", 0f);
editor.putBoolean("firstTimeGettingPosition", true);
editor.putString("sessionID", UUID.randomUUID().toString());
}
editor.apply();
setTrackingButtonState();
}
private boolean saveUserSettings() {
if (textFieldsAreEmptyOrHaveSpaces()) {
return false;
}
SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
switch (intervalRadioGroup.getCheckedRadioButtonId()) {
case R.id.i1:
editor.putInt("intervalInMinutes", 1);
break;
case R.id.i5:
editor.putInt("intervalInMinutes", 5);
break;
case R.id.i15:
editor.putInt("intervalInMinutes", 15);
break;
}
//editor.putString("userName", txtUserName.getText().toString().trim());
editor.putString("userName", spnrEmployee.getSelectedItem().toString().trim());
editor.putString("defaultUploadWebsite", txtWebsite.getText().toString().trim());
editor.apply();
return true;
}
private boolean textFieldsAreEmptyOrHaveSpaces() {
String tempUserName = txtUserName.getText().toString().trim();
String tempWebsite = txtWebsite.getText().toString().trim();
if (tempWebsite.length() == 0 || hasSpaces(tempWebsite) || tempUserName.length() == 0 || hasSpaces(tempUserName)) {
Toast.makeText(this, R.string.textfields_empty_or_spaces, Toast.LENGTH_LONG).show();
return true;
}
return false;
}
private boolean hasSpaces(String str) {
return ((str.split(" ").length > 1) ? true : false);
}
private void displayUserSettings() {
SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE);
intervalInMinutes = sharedPreferences.getInt("intervalInMinutes", 1);
switch (intervalInMinutes) {
case 1:
intervalRadioGroup.check(R.id.i1);
break;
case 5:
intervalRadioGroup.check(R.id.i5);
break;
case 15:
intervalRadioGroup.check(R.id.i15);
break;
}
txtWebsite.setText(sharedPreferences.getString("defaultUploadWebsite", defaultUploadWebsite));
//this line for modify and sharepreferences
spinner.setSelection(sharedPreferences.getString("userName", ""));
}
private boolean checkIfGooglePlayEnabled() {
if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS) {
return true;
} else {
Log.e(TAG, "unable to connect to google play services.");
Toast.makeText(getApplicationContext(), R.string.google_play_services_unavailable, Toast.LENGTH_LONG).show();
return false;
}
}
private void setTrackingButtonState() {
if (currentlyTracking) {
trackingButton.setBackgroundResource(R.drawable.green_tracking_button);
trackingButton.setTextColor(Color.BLACK);
trackingButton.setText(R.string.tracking_is_on);
} else {
trackingButton.setBackgroundResource(R.drawable.red_tracking_button);
trackingButton.setTextColor(Color.WHITE);
trackingButton.setText(R.string.tracking_is_off);
}
}
在此處保存微調器的當前位置:
private boolean saveUserSettings() {
if (textFieldsAreEmptyOrHaveSpaces()) {
return false;
}
SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
switch (intervalRadioGroup.getCheckedRadioButtonId()) {
case R.id.i1:
editor.putInt("intervalInMinutes", 1);
break;
case R.id.i5:
editor.putInt("intervalInMinutes", 5);
break;
case R.id.i15:
editor.putInt("intervalInMinutes", 15);
break;
}
//editor.putString("userName", txtUserName.getText().toString().trim());
editor.putString("userName", spnrEmployee.getSelectedItem().toString().trim());
editor.putString("defaultUploadWebsite", txtWebsite.getText().toString().trim());
editor.putInt("position", spnrEmployee.getSelectedItemPosition());
editor.apply();
return true;
}
然后,當您想顯示存儲的值時,只需使用以下命令:
private void displayUserSettings() {
SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE);
intervalInMinutes = sharedPreferences.getInt("intervalInMinutes", 1);
switch (intervalInMinutes) {
case 1:
intervalRadioGroup.check(R.id.i1);
break;
case 5:
intervalRadioGroup.check(R.id.i5);
break;
case 15:
intervalRadioGroup.check(R.id.i15);
break;
}
txtWebsite.setText(sharedPreferences.getString("defaultUploadWebsite", defaultUploadWebsite));
//this line for modify and sharepreferences
spinner.setSelection(sharedPreferences.getInt("position",0));
}
不要忘記,在將適配器數據設置為微調器后,您應該調用此方法: displayUserSettings
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.