Я очень новичок в программировании, я делаю свое собственное приложение с Java (Android Studio). Я хочу отобразить информацию из моей онлайн-базы данных.
Я помещаю информацию в свои SharedPreferences и после того, как хочу отобразить в моем текстовом представлении:
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawer;
private String user_name;
private String user_mail;
private String user_img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//On vient mettre à jour les données profile de l'user
//Reponse du fichier getProfile.php
Response.Listener<String> responseListener = new Response.Listener<String>(){
@Override
public void onResponse(String response) {
//Si pas d'erreur
try {
JSONObject jsonResponse = new JSONObject(response);
//On récupére la valeur de la variable Success du JSON
boolean success = jsonResponse.getBoolean("success");
if (success){
//On récupére le profil de l'user
user_name = jsonResponse.getString("name");
user_img = jsonResponse.getString("img");
//on vient l'enregistrer dans le sharedPreferencesProfile
sharedPreferences.save(MainActivity.this,getResources().getString(R.string.user_sharedPreferences),"name",user_name);
sharedPreferences.save(MainActivity.this,getResources().getString(R.string.user_sharedPreferences),"mail",user_mail);
sharedPreferences.save(MainActivity.this,getResources().getString(R.string.user_sharedPreferences),"img",user_img);
}else{
//On a pas réussi à récupérer son email, on le déconnecte et on vide son sharedPreferences user
sharedPreferences.delete(MainActivity.this,getResources().getString(R.string.user_sharedPreferences));
//et on se dirige vers la page de login
Intent logoutIntent = new Intent(MainActivity.this, LoginActivity.class);
MainActivity.this.startActivity(logoutIntent);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
setSharedPreferencesProfile(responseListener);
//Récupération la toolbar
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Récupération le menu de gauche
drawer = findViewById(R.id.drawer_layout);
//Récupération de la navigation view
final NavigationView navigation_view = (NavigationView) findViewById(R.id.nav_view);
navigation_view.setNavigationItemSelectedListener(this);
//Récupération de l'header pour initialiser les text view
View header = navigation_view.getHeaderView(0);
//Initialisation des variables
final TextView txt_user_name = (TextView) header.findViewById(R.id.menu_user_name);
final TextView txt_user_mail = (TextView) header.findViewById(R.id.menu_user_mail);
final TextView btnLogout = (TextView) findViewById(R.id.menu_logout);
//On affiche dans le menu le nom et mail de l'utilisateur
txt_user_name.setText(user_name);
txt_user_mail.setText(user_mail);
//Au clic sur l'hamburger on ouvre le menu de gauche
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,R.string.txt_menu_open, R.string.txt_menu_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
//Click sur btnLogout
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//On vide les données sauvegardées
sharedPreferences.delete(MainActivity.this,getResources().getString(R.string.user_sharedPreferences));
//et on se dirige vers la page de login
Intent logoutIntent = new Intent(MainActivity.this, LoginActivity.class);
MainActivity.this.startActivity(logoutIntent);
}
});
//Condition pour ne pas retomber à chaque fois sur la page Plantes
if (savedInstanceState == null) {
//a l'ouverture de la page Main Activity (de suite apres le login) on vient selectionné (et donc ouvrir) la page Plantes
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new PlantsFragment()).commit();
//on sélectionne dans le menu l'item Plantes
navigation_view.setCheckedItem(R.id.menu_plants);
//et on met à jour le titre du Toolbar
getSupportActionBar().setTitle(getString(R.string.txt_plants_title));
}
}
//Met à jour les SharedPreferences lors de la connexion (on vient récupérer Nom, Mail et Photo)
public void setSharedPreferencesProfile(Response.Listener<String> responseListener){
//On récupére le mail via le sharedPreferences
user_mail = sharedPreferences.read(MainActivity.this,getResources().getString(R.string.user_sharedPreferences),"mail",null);
//On récupére le fichier php via la variable dans strings.xml et on envoi la requete
GetProfileRequest getProfileRequest = new GetProfileRequest(user_mail,responseListener,getResources().getString(R.string.php_file) + "get_profile.php");
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
queue.add(getProfileRequest);
}
}
Я не понимаю, почему моя функция setSharedPreferencesProfile выполняется после этого кода (txt_user_name.setText (user_name) ) и txt_user_mail.setText (user_mail))
Заранее спасибо;)
Приветствия