안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
독학으로 다이어리 관련 어플을 만들고 있는 독학생입니다.
pererences 정보값을 얻어오려고 하는데 도무지 값을 불러오질 못해서 질문드립니다.
일단 Preference.java에서 메일주소를 입력해서 data/data/어플리케이션/shared_prefs/pref.xml 에 해당 이메일 주소가 저장되는 것도 확인했습니다.
그런데 Backup.java 의 TextView에 해당 주소를 뿌려주려고 저장된 값을 불러오려니 도무지 되지 않아서 질문을 여쭙습니다.
(※초보에 처녀작이라 코드가 많이 지저분합니다. 죄송합니다.)
[Backup.java]
package com.android.settingapp;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class BackupActivity extends Activity {private final static String KEY_ID = "";
private TextView emailtext;
private Preference preference;
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.backup);
((Button) this.findViewById(R.id.bkbtn1)).setOnClickListener(listener);
((Button) this.findViewById(R.id.bkbtn2)).setOnClickListener(listener);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
emailtext=(TextView)this.findViewById(R.id.emailtext);
updateFromPreference();
}
private void updateFromPreference(){SharedPreferences pref=
PreferenceManager.getDefaultSharedPreferences(this);
String msg=String.format("설정된 이메일은"+pref+"입니다.", emailtext); emailtext.setText(pref.getString("id", msg));}
[Preference.java]
package com.android.settingapp;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Preference extends Activity { private final static String KEY_ID="id";
private SharedPreferences pref1 = null;
private EditText idEdit;
String ide;
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.mailsetting);
this.idEdit=(EditText) this.findViewById(R.id.sttext);
pref1=getSharedPreferences("pref",Activity.MODE_PRIVATE); SharedPreferences pref1 = this.getSharedPreferences("pref",Context.MODE_PRIVATE);
String id = pref1.getString("id", ""); id = pref1.getString("id", ""); if (id.length() != 0) {this.idEdit.setText(id);
}
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
((Button) this.findViewById(R.id.stbtn1)).setOnClickListener(listener);
}
@Override
protected void onPause() {super.onPause();
ide = idEdit.getText().toString();
if (ide.length() == 0) {return;
}
SharedPreferences prefs = this.getSharedPreferences("pref",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("id", ide);editor.commit();
}
View.OnClickListener listener = new View.OnClickListener() { public void onClick(View v) { switch (v.getId()) {case R.id.stbtn1:
Context context = getApplicationContext();
String text = "메일 설정 완료!!";
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
finish();
}
}
};
}




BackupActivity의 updateFromPreference함수에서 문제가 있습니다.
Preference 클래스와 BackupActivity클래스의
SharedPreferences 데이터를 가져오는 방법이 달라서
어플에서는 다른것으로 인식하기때문에 제대로 못가져오는 것입니다.