2012-03-09 3 views
1

developer.android.com SharedPreferencesのコードを使用してSharedPreferencesをテストしようとしています。彼らがonStop "may never be called"と言ってから少し変更しようとしました。問題は、オーバーライドの最初の行がsuper.onPause()であっても、onPauseが私にこの奇妙なエラーを与えることです。ここでonPause():superNotCalledException

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

私は何かが欠けてるの任意のアイデア? onPause()は、アプリケーションを初めて起動するときにも呼び出されるため、必要なif(作成済み)にも注意してください。

答えて

5
protected void onPause() {}{ 

余分な中括弧が1つあり、空の機能のように見えます。

+1

質問を登録して投稿するには10分間ですか?私は数回それを読んで、それを見ませんでした。ありがとう! – maugch

1

私は単純な誤植のように見えます... onPause()の直後に空の中カッコがあります。それはおそらくあなたの方法として検出されます。

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

ありがとう! (私はそれがコードをチェックしている目の力だと思う)また、Eclipseが私に警告しないことは奇妙だ。 – maugch

+1

もちろん、持ってはいけないときに空の機能があったことを警告することはできません...しかし、私はそれがどこにもない匿名の機能について文句を言っていないのに驚いています! – JTeagle

+0

もう一度確認しました。全く警告はありません。 – maugch

関連する問題