[JAVA] Envoie de SMS / SharedPreferences.
TartoPomme
-
BunoCS Messages postés 16550 Statut Modérateur -
BunoCS Messages postés 16550 Statut Modérateur -
Bonjour, j'ai un problème depuis hier...
Mon problème est que quand je récupère une variable de mon "sharedPreferences", il se met directement par la valeur par défaut.
En gros, j'aimerais récupérer la variable numéro de ma première activité, pour m'en servir dans ma deuxième, mais celle si ce met directement sous la valeur par défaut soit "0" ici.
Voici le code java de ma première activité :
Ainsi que le code Java de la deuxième activité :
Merci à ceux qui m'aideront, c'est très gentil de leur part ! ;)
Mon problème est que quand je récupère une variable de mon "sharedPreferences", il se met directement par la valeur par défaut.
En gros, j'aimerais récupérer la variable numéro de ma première activité, pour m'en servir dans ma deuxième, mais celle si ce met directement sous la valeur par défaut soit "0" ici.
Voici le code java de ma première activité :
package android.waterconnect.waterconnect;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
//Déclaration des différents éléments.
private static EditText editTextNumero;
private static Button btnLogin;
private static CheckBox mCheckBox;
private static TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//attribution de noms(id) aux éléments.
editTextNumero = (EditText) findViewById(R.id.numero);
btnLogin = (Button) findViewById(R.id.btnLogin);
mCheckBox = (CheckBox) findViewById(R.id.checkbox);
textView = (TextView) findViewById(R.id.tv1);
//Valeur par default / Restaure valeur par défaut. + attribution key. (Ici j'ai choisis comme ensemble de pref : "sharedPreferences", mais j'aurais pu choisir "numArduino".)
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
final int numero = sharedPreferences.getInt("numero", -1);
//Test de compatibilité + affichage en haut à gauche.
if (numero != -1){
textView.setText("Bonjour, le dernier numéro enregistré est le : 0" + numero);
}else{
Toast.makeText(MainActivity.this, "Erreur, veuillez rentrer un numero.", Toast.LENGTH_SHORT).show();
}
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent menuActivityIntent = new Intent(MainActivity.this, MenuActivity.class);
menuActivityIntent.putExtra("numero", numero);
startActivity(menuActivityIntent);
}
});
}
public void Save (View view){
//On récupère la chaîne de caractères dans l'EditText et on la change en Int.
String numeroStr = editTextNumero.getText().toString();
int numero = Integer.parseInt(numeroStr);
//Indique qu'on change une valeur.
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
//On donné a la key "numero" la valeur de la variable "numéro".
editor.putInt("numero", numero);
//On applique les changements.
editor.commit();
}
}
Ainsi que le code Java de la deuxième activité :
package android.waterconnect.waterconnect;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MenuActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
//appel a ma variable "numero" des SharedPreferences.
SharedPreferences sharedPreferences = getSharedPreferences("numero",MODE_PRIVATE);
int test = sharedPreferences.getInt("numero", 0);
//Cast int en String.
final String num = String.valueOf(test);
//***** Bouton Batterie *****.
//On récupère le bouton batterie en XML grâce à son id.
Button btnBattery = (Button) findViewById(R.id.battery);
//Message prédéfini pour la batterie.
final String msgb = "donnees_batterie";
btnBattery.setOnClickListener(new View.OnClickListener() {
@SuppressWarnings("deprecation")
public void onClick(View v) {
if (num.length() >= 4){
SmsManager.getDefault().sendTextMessage(num, null, msgb, null, null);
}else{
Toast.makeText(MenuActivity.this, "Erreur, le numéro est peut-être mal enregistré."+num, Toast.LENGTH_SHORT).show();
}
}
});
//***** Bouton Batterie *****.
//***** Bouton Humidité *****.
//On récupère le bouton humidité en XML grâce à son id.
Button btnHumidity = (Button) findViewById(R.id.humidity);
//Message prédéfini.
final String msgh = "donnees_humidite";
btnHumidity.setOnClickListener(new View.OnClickListener() {
@SuppressWarnings("deprecation")
public void onClick(View v) {
SmsManager.getDefault().sendTextMessage(num, null, msgh, null, null);
}
});
//***** Bouton Humidité *****.
}
}
Merci à ceux qui m'aideront, c'est très gentil de leur part ! ;)
A voir également:
- [JAVA] Envoie de SMS / SharedPreferences.
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
1 réponse
Hello,
Je pense que tu mélanges
La 1ère permet de stocker des valeurs liées à l'Activity. La 2nde permet de stocker des valeurs dans toute l'app. Doc pour plus de détails.
Dans ton cas, tu as 2 possibilités :
Soit tu utilises les
Ouvrir
Ecrire
Lire
Soit, comme tu as commencé à le faire, tu peux utiliser les paramètres d'
Envoi de paramètres
Réception des paramètres (dans le
Note : les variables ***_KEY sont en faites des constantes que tu aura pris soin d'initialiser correctement
Je pense que tu mélanges
getPreferences()et
getSharedPreferences().
La 1ère permet de stocker des valeurs liées à l'Activity. La 2nde permet de stocker des valeurs dans toute l'app. Doc pour plus de détails.
Dans ton cas, tu as 2 possibilités :
Soit tu utilises les
SharedPreferences
Ouvrir
Context context = getActivity(); SharedPreferences sharedPref = context.getSharedPreferences(FILE_KEY, Context.MODE_PRIVATE);
Ecrire
SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt(NUMBER_KEY, numero); editor.commit();
Lire
int numero = sharedPref.getInt(NUMBER_KEY, -1);
Soit, comme tu as commencé à le faire, tu peux utiliser les paramètres d'
Intent
Envoi de paramètres
Intent intent = new Intent(this, MenuActivity.class); intent.putExtra(EXTRA_NUMBER_KEY, numero); startActivity(intent);
Réception des paramètres (dans le
onCreate()de ta 2nde Activity)
Intent intent = getIntent(); // gets the previously created intent int numero = intent.getIntExtra(EXTRA_NUMBER_KEY);
Note : les variables ***_KEY sont en faites des constantes que tu aura pris soin d'initialiser correctement