Domanda

Ho un attività di accesso che memorizza le credenziali in propri SharedPreferences; poi ho aggiunto due getter per la loro lettura, qualcosa come

public String getUsername() {
  return getPreferences(MODE_PRIVATE).getString("#username", null);
}

ma questo getta una NPE quando chiamo come questo

String mUser = (new Login()).getUsername();

Sembra che l'attività non può leggere le sue preferenze, dopo una semplice chiamata contructor, come se fosse in uno stato incompleto. Ho letto un sacco di argomenti correlati, ma non sono riuscito a trovare una soluzione. Fondamentalmente, ho bisogno di condividere queste credenziali tra le attività nella mia applicazione

È stato utile?

Soluzione

Non è così che si crea attività. Quando basta chiamare new Login(), non ha un contesto corretto per accedere alle preferenze condivise. Si dovrebbe anche MAI, MAI chiamare new su una classe che estende Activity o Service. Questo non è come Android lavoro classi.

Avrete bisogno di un modo per ottenere un riferimento all'attività.

Ma suona come il vostro disegno non è corretto. Non dovrebbe essere necessario per arrivare a preferenze di un'altra attività. Se lo fai, appena messo nelle defaultSharedPrefernces invece.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top