Pergunta

Estou tentando testar SharedPreferences usando o código em desenvolvedor.android.com Preferências compartilhadas.Tentei mudar um pouco já que dizem onStop "pode ​​nunca ser chamado".O problema é que onPause me dá esse erro estranho, mesmo que a primeira linha da substituição seja super.onPause ().

03-09 14:41:00.883: E/AndroidRuntime(394): android.app.SuperNotCalledException: Activity {com.mobinoob.saveinfo/com.mobinoob.saveinfo.SaveInfoActivity} did not call through to super.onPause()

Aqui está um exemplo do código:

public class SaveInfoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    addListener();
    loadText();
    textSaved = "";
    created = true;
}

private boolean created = false;

private void addListener() {
    EditText et = (EditText) findViewById(R.id.editText1);
    et.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s) {
            textSaved = s.toString();
            System.out.println("text:" + textSaved);
        }

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
        }

        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
        }
    });

}

private static String fileName = "savedInfo.txt";
private static String propertyName = "text";
private String textSaved;

@Override 
protected void onPause() {}{
     super.onPause();
     if (created) {
         saveText();
     }
}
private void loadText() {
    SharedPreferences settings = getSharedPreferences(fileName, MODE_PRIVATE);
    if (settings == null)
        return;
    String result = settings.getString(propertyName, "");
    setText(result);
}

private void saveText() {
    System.out.println("saving");
    SharedPreferences settings = getSharedPreferences(fileName, 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putString(propertyName, textSaved);
    editor.commit();

}
private void setText(String result) {
    TextView tv = (TextView) findViewById(R.id.textView1);
    tv.setText(result);
    System.out.println("restore" + result);
}

Alguma ideia de onde estou faltando alguma coisa?Observe também o if(created) necessário porque onPause() também é chamado na primeira vez que inicio o aplicativo.

Foi útil?

Solução

protected void onPause() {}{ 

Você tem um par extra de chaves ali, fazendo com que pareça uma função vazia.

Outras dicas

Parece um simples erro de digitação para mim... observe os colchetes vazios logo após onPause().Provavelmente isso está sendo detectado como seu método.

@Override 
protected void onPause() {}{
     super.onPause();
     if (created) {
         saveText();
     }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top