2013-12-12 4 views
1

У меня есть два класса, один loggedIn и класс пользователя. В классе LoggedIn я хочу, чтобы показать общие предпочтения, которые я сделал, когда пользователь входит в систему.Общие предпочтения между классами (статические)?

loginPrefs = getSharedPreferences("loginpreferences",Context.MODE_PRIVATE); 
SharedPreferences.Editor loginEditor = loginPrefs.edit(); 
loginEditor.putString("userID", userIDCrypt); 
loginEditor.commit(); 

Теперь я хочу сделать в пользовательском классе метод GetId(), что я могу вызвать метод с каждым класс с User.getID() ;. Как я могу это сделать?

Мне нужен идентификатор пользователя в нескольких классах, поэтому я хочу один вид активности (например, getID, например), который дает мне идентификатор пользователя.

+2

до сих пор неясно с вопросом – KOTIOS

ответ

1

сделать, как это сделать один класс для sharedpreference

 public class Session { 

      private SharedPreferences prefs; 

       public Session(Context cntx) { 
        // TODO Auto-generated constructor stub 
        prefs = PreferenceManager.getDefaultSharedPreferences(cntx); 
       } 

      public void setusename(String usename) { 
      prefs.edit().putString("usename", usename).commit(); 
      prefsCommit(); 
     } 

     public String getusename() { 
      String usename = prefs.getString("usename",""); 
      return usename; 
     } 
} 

теперь после создания этого класса, когда и хотят использовать это использовать, как этот макияжа объект ога этого класса, как

private Session session;//global variable 
session = new Session(cntx); //in oncreate 

и сейчас мы устанавливаем sharedpreference, тогда используйте это как

session.setusename("USERNAME"); 

Теперь, когда все и хотят, чтобы получить имя пользователя то же работу для объекта сеанса и называют это

session.getusename(); 

удачи :) же пароля

+0

я не могу установить UserId в другом классе с Session.setUserId (123) becaus это не статический метод. И userId имеет как числа, так и символы. – TMIEDEMA

+0

chk my недатированный ответ –

+0

А теперь, как я могу получить свое имя пользователя? – TMIEDEMA

1

попробовать это в одной деятельности:

SharedPreferences sp; 
SharedPreferences.Editor edit; 
sp = getSharedPreferences("enter", MODE_PRIVATE); 
edit = sp.edit(); 
edit.putString("name", username); 
edit.putString("pwd", password); 
edit.commit(); 

в следующей деятельности:

SharedPreferences sp = getSharedPreferences("enter", MODE_PRIVATE); 
sp.getString("name", "default value")); 
sp.getString("pwd", "default value")); 
+0

Это работает, но в нескольких действиях мне нужен идентификатор пользователя, поэтому мне нужен один метод, который получает идентификатор пользователя. Так что я хочу метод, называемый getID, и что я могу использовать его в нескольких классах. – TMIEDEMA

0

Извините, если re - это любые проблемы с синтаксисом или компиляцией, просто набрав текст из моей головы и сделав некоторые ошибки. Таким образом, по сути, это подход, который можно использовать для раскрытия ваших привилегий из одного простого класса и доступа к нему из любого места.

public class MySharedPrefs { 
    public SharedPreferences sp; 

    public MySharedPrefs() 
    { 
     this.sp = c.getSharedPreferences("prefs", Context.MODE_PRIVATE); 
    } 

    public static String getStringFieldValue(Context c, String fieldName) 
    { 
     MySharedPrefs p = new MySharedPrefs(c); 
     return p.sp.getString(fieldName, "default value"); 
    } 

    public static void setStringValue(Context c, String fieldName, String value) 
    { 
     MySharedPrefs p = new MySharedPrefs(c); 
     SharedPreferences.Editor edit; 
     edit = p.sp.edit(); 
     edit.putString(fieldName, value); 
     edit.commit(); 
    } 

} 

Затем использовать его, как это в вашей деятельности:

MySharedPrefs.getStringFieldValue(this, "name"); 

Вы можете также расширить этот класс и добавить дополнительные вспомогательные методы, такие как getUserName или т.п.

UPDATE:

При вызове этого из другого статического класса этот класс должен иметь ссылку на контекст ваших приложений, тогда вам необходимо предоставить этот контекст этому fu вместо использования этого.

MySharedPrefs.getStringFieldValue(context, "name"); //if your other static class has a property called context that contains your applications context 
+0

Вы не можете использовать это в статической строке. – TMIEDEMA

+0

В какой функции вы использовали этот класс? – Armand

+0

Просто для того, чтобы развернуть это, я имею в виду контекст текущей деятельности, так что это будет работать так же, как при использовании в 'onCreate', например, в противном случае вам нужно получить контекст, где вы вызываете эту функцию – Armand

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