2012-03-09 2 views
1

developer.android.com SharedPreferences의 코드를 사용하여 SharedPreferences를 테스트하려고합니다. 나는 그들이 약간의 말을 바꾸기 위해 노력 했으니 멈추라. "may never be called". 문제는 onPause가 오버 라이드의 첫 번째 행이 super.onPause() 인 경우에도이 이상한 오류가 발생한다는 것입니다.onPause() : SuperNotCalledException

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

어떤 생각 내가 부족 뭔가 : 여기

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() 

코드의 예입니다? 또한 onPause()가 응용 프로그램을 처음 시작할 때 호출되기 때문에 if (created)에 유의하십시오.

답변

5
protected void onPause() {}{ 

여분의 쌍의 중괄호가있어 빈 기능처럼 보이게합니다.

+1

질문을 등록하고 게시하려면 10 분이 필요합니다. 어리석은 오자를 발견하기 위해 10 초. :) 나는 그것을 여러 번 읽고 그것을 보지 못했다. 감사! – maugch

1

간단한 오타처럼 보입니다 ... onPause() 바로 뒤에 빈 괄호가 있습니다. 그것은 가능성이 귀하의 방법으로 감지되고 있습니다.

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

감사! (코드를 검사하는 것이 더 많은 눈의 힘이라고 생각합니다.) 또한 Eclipse가 경고하지 않는다는 것이 이상합니다. – maugch

+1

당신이 가지고 있지 않아야 할 때 당신이 비어있는 기능을했다는 것을 경고 할 수는 없지만, 아무 곳에도없는 익명의 기능에 대해 불평하지 않았다는 것이 놀랍습니다! – JTeagle

+0

다시 확인했습니다. 전혀 경고하지 않습니다. – maugch

관련 문제