onPause (): SuperNotCalledException, даже если есть super.onPause () - PullRequest
1 голос
/ 09 марта 2012

Я пытаюсь протестировать SharedPreferences с помощью кода в developer.android.com SharedPreferences . Я попытался немного изменить его, так как говорят, что onStop "никогда не будет называться" . Проблема в том, что onPause выдает мне эту странную ошибку, даже если первая строка переопределения - 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()

Вот пример кода:

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);
}

Есть идеи, где я что-то упускаю? Также обратите внимание на if (созданный), который необходим, потому что onPause () также вызывается при первом запуске приложения.

Ответы [ 2 ]

5 голосов
/ 09 марта 2012
protected void onPause() {}{ 

У вас есть дополнительная пара фигурных скобок, что делает ее похожей на пустую функцию.

1 голос
/ 09 марта 2012

Похоже на простую опечатку ... обратите внимание на пустые скобки сразу после onPause (). Это, вероятно, определяется как ваш метод.

@Override 
protected void onPause() {}{
     super.onPause();
     if (created) {
         saveText();
     }
}
...