Je ne suis pas très familier avec le codage java mais je voulais créer ma propre application. Je souhaite utiliser SharedPreferences
pour stocker des valeurs dans différentes activités/classes, comme indiqué dans plusieurs didacticiels (ainsi que des questions sur ce site), mais lorsque j'essaie de les lire dans une autre activité d'une autre classe, je reçois au hasard numéros comme 2131361821.SharedPreferences dans plusieurs classes
L'utilisateur doit remplir un champ textview
avec l'ID direction_1000
afin que j'obtienne une direction du vent à 1000ft via la classe GetWind.
Si je stocke cette valeur en tant int
en SharedPreference
tout fonctionne bien, mais si je veux passer cette valeur à la classe InputNavData
et l'afficher là-bas par le int
PHI
et String
phi
je reçois cette valeur étrange.
Quelqu'un peut-il m'aider à résoudre ce problème? Désolé d'avance pour le code et la question désordonnés mais comme je l'ai dit, c'est tout nouveau pour moi.
MainActivity
package com.example.navigationcalculator;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.navigationcalculator.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/** Called when the user clicks the Agree button */
public void wind_input(View view) {
Intent intent = new Intent(this, GetWind.class);
startActivity(intent);
}
/** Called when the user clicks the Input Navigation Data button */
public void input_nav_data(View view) {
Intent intent = new Intent(this, InputNavData.class);
startActivity(intent);
}
/** Called when the user clicks the Calculate Data button */
public void calculate_data(View view) {
Intent intent = new Intent(this, CalculateData.class);
startActivity(intent);
}
}
GetWind
package com.example.navigationcalculator;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import static android.content.ContentValues.TAG;
import static com.example.navigationcalculator.R.id.direction_1000;
public class GetWind extends Activity {
public static final String PREFS_NAME = "com.example.myfirstapp.sharedPref";
public final static String DIR_1000 = "com.example.myfirstapp.DIR_1000";
public final static String SPEED_1000 = "com.example.myfirstapp.SPEED_1000";
SharedPreferences sharedpreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get_wind);
}
//Read all wind speeds and directions and put them in a shared preferences file
public void input_nav_data(View view) {
Intent intent = new Intent(this, InputNavData.class);
sharedpreferences = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
startActivity(intent);
// 1000 feet
EditText dir_1000 = (EditText)findViewById(R.id.direction_1000);
int direction_1000 = Integer.parseInt(dir_1000.getText().toString());
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putInt(DIR_1000,direction_1000);
editor.commit();
int shared_dir_1000 = sharedpreferences.getInt(PREFS_NAME,direction_1000);
String SD1000 = String.valueOf(shared_dir_1000);
Log.d("direction 1000",SD1000);
}
}
InputNavData
package com.example.navigationcalculator;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import static com.example.navigationcalculator.GetWind.PREFS_NAME;
import static com.example.navigationcalculator.R.id.direction_1000;
public class InputNavData extends Activity {
public final static String altitude_static_string = "com.example.myfirstapp.altitude";
SharedPreferences sharedpreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input_nav_data);
}
//Read all navigation data and pass them through as a string to activity CalculateData
public void calculate_data(View view) {
Intent intent = new Intent(this, CalculateData.class);
sharedpreferences = getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
startActivity(intent);
// Read the actual altitude
EditText alt = (EditText) findViewById(R.id.altitude);
int altitude = Integer.parseInt(alt.getText().toString());
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putInt(altitude_static_string,altitude);
editor.commit();
int shared_altitude = sharedpreferences.getInt(PREFS_NAME,altitude);
String SALT = String.valueOf(shared_altitude);
Log.d("altitude",SALT);
int PHI = sharedpreferences.getInt(PREFS_NAME,direction_1000);
String phi = String.valueOf(PHI);
Log.d("dir 1000 in inputnavdata",phi);
}
}
Êtes-vous essayant de passer des données d'une certaine activité à une autre? –
Oui en effet, j'essaie de transmettre les données (direction_1000) de l'activité InputNavData à l'activité CalculateData via des références partagées. – Phil
N'utilisez pas 'SharedPreferences' pour simplement transmettre des données d'une activité à une autre, envoyez plutôt vos données avec' l'intention', si vous ne savez pas comment je peux vous aider –