SharedPreferences를 원본과 다른 활동으로 복원하는 데 문제가 있습니다.동일한 응용 프로그램에서 별도의 활동을 통한 SharedPreferences
"NewCustomerActivity"및 "OldCustomerActivity"를 사용하는 두 개의 클래스가 있습니다. 둘 다 파일에 대한 읽기/쓰기 권한이 있어야합니다. 현재 활동을 죽일 때 양식 데이터를 적절히 복원하는 NewCustomerActivity에서 작성하여 테스트하고 있습니다. 그러나 NullPointerException 함께 NewCustomerActivity 같은 의미로 데이터를 복원하려면 시도하고 OldCustomerActivity 열면 FC를 받고 있어요.
public class NewCustomerActivity extends Activity {
public static final String USER_INFO = "UserInfoFile"; // This file will the store the user's information for later use.
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.newcustomer);
SharedPreferences userInfo = getSharedPreferences(USER_INFO, 0); // Restore our earlier saved info.
EditText et;
...... (Other code is irrelevant)
}
OldActivityNew은 동일합니다 : NewCustomerActivity
public class OldCustomerActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.oldcustomer);
SharedPreferences userInfo = getSharedPreferences(NewCustomerActivity.USER_INFO, 0); // Restore our earlier saved info.
EditText et;
et = (EditText) findViewById(R.id.EditTextName);
et.setText(userInfo.getString("name",""));
..... (Continue to fill forms in this context)
}
이 활동의 모두 이전 정보와 함께 양식을 작성하고, 아무것도 변경된 경우 제출시 파일을 업데이트; 그러나 NewCustomerActivity 만 파일을 채우는 것 같습니다 (또는 강제로 닫는 것이 구체적이 아니어야합니다)
MODE_WORLD_READABLE (두 번째 매개 변수 = 1)에서 SharedPreference를 설정하려고 시도했지만 아무런 소용이 없습니다. 비록 내가 사생활에서 그것을 실행할 수 있어야한다고 나는 믿는다. 나는 또한 NewCustomerActivity.USER_INFO로 USER_INFO를 참조하려고 시도했습니다.
나는 명백한 것을 놓치고 있어야합니다. 그러나 어떤 도움을 주셔서 감사합니다.
편집 : 파일에 쓰고있는 방법을 묻는 사람들을 위해
:
SharedPreferences userInfo = getSharedPreferences(USER_INFO, 0); // Save info for later
SharedPreferences.Editor userInfoEditor = userInfo.edit();
EditText et;
et = (EditText) findViewById(R.id.EditTextName);
String nameValue = et.getText().toString();
userInfoEditor.putString("name", nameValue);
각 활동의 SharedPreference에 어떻게 쓰려고합니까? –
다음은 스 니펫입니다. SharedPreferences userInfo = getSharedPreferences (USER_INFO, 0); // 나중에 정보를 저장하십시오. \t \t SharedPreferences.편집기 userInfoEditor = userInfo.edit(); \t \t EditText et; \t \t et = (EditText) findViewById (R.id.EditTextName); \t \t 문자열 nameValue = et.getText(). toString(); \t \t userInfoEditor.putString ("name", nameValue); –
쓰기 작업을 커밋하지 않는 것 같습니다. 'SharedPreferences'를 적용하려면 모든 편집 작업을 완료 한 후에'userInfoEditor.commit(); '을 수행해야합니다. – curioustechizen