2013-11-28 2 views
0

У меня есть одна проблема. У меня есть приложение, в котором вы можете голосовать за кого-то, кого вы любите. Вы можете голосовать только один раз в день. Я сохраняю этот день, когда пользователь голосует с SharedPreferences, поэтому пользователь не может проголосовать еще раз за этот день. Все работает нормально. Я создаю другое действие, и из этого мероприятия я знаю выбор пользователя. Это означает, что я знаю, для кого пользователь хочет голосовать. Мой вопрос: как я могу получить sharedpreferences пользователя (день, когда пользователь проголосовал в прошлый раз), записать его в SharedPreferences (что Vote Activity будет знать, что я выбираю кого-то), и мне нужно скопировать один и тот же код из голосования. Активность во вторую активность или Я могу использовать свою Голосовую активность из какого-то кода? Мой код с сохранением Предпочтения и звонки JSON:Позвоните JSON из другого вида деятельности

private void savePreferences(String key, int value) { 
     SharedPreferences sharedPreferences = PreferenceManager 
       .getDefaultSharedPreferences(this); 
     Editor editor = sharedPreferences.edit(); 
     editor.putInt(key, value); 
     editor.commit(); 
    } 

    class AttemptLogin extends AsyncTask<String, String, String> { 

     @Override 
     protected void onPostExecute(String file_url) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(file_url); 
      pDialog.dismiss(); 

     } 

     @Override 
     protected String doInBackground(String... args) { 
      // TODO Auto-generated method stub 
      String pos = pos1.toString(); 

      Log.i("12", pos); 
      int success; 
      try { 
       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       params.add(new BasicNameValuePair("pos", pos)); 
       Log.d("request!", pos); 

       JSONObject json = jsonParser.makeHttpRequest(VOTE_URL, "POST", 
         params); 


       success = json.getInt(TAG_SUCCESS); 
       if (success == 1) { 
        Log.d("Successful!", json.toString()); 

        Intent i = new Intent(Vote.this, MainActivity.class); 
        finish(); 
        startActivity(i); 
       } else { 
        Log.d("Failure!", json.toString()); 

       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(Balsuok.this); 
      pDialog.setMessage("Voting..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      pDialog.show(); 

     } 

    } 
+0

Я думаю, что вы забыли сохранить результат JSON в sharedpreferences –

+0

мне не нужно, чтобы сохранить JSon результат. Мне просто нужно сэкономить день, когда пользователь последний раз проголосовал – linkas

ответ

0

Установить общее предпочтение как этот.

активность 1: -

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putString(key, value); 
editor.commit(); 

Получить общее предпочтение во второй деятельности, как это.

деятельности2: -

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
return preferences.getString(key, null); 
+0

Просто подскажите, установите ключ с вашей датой dd-MM-yyyy ... тогда вы будете теперь, когда пользователь уже проголосовал, если ключ! = Null, пользователь уже проголосовал за то, что date – GhostDerfel

+0

Я только что опубликовал способ установки и получения Shared Pref. Это его желание, что он хочет внести в стоимость. –

+0

И еще одно, лучший способ получить это, как вы ожидаете, - проверить, проголосовал ли пользователь за ваш веб-сервис, если вы проверяете использование SharedPreferences, вы потеряете все свои данные, если пользователь просто очистит данные приложения или удалит ваше приложение. – GhostDerfel

Смежные вопросы