마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

다른 액티비티끼리 프리퍼런스 공유가 가능한가요?

0 추천
public class PhoneActivity extends Activity {

    public static Context mContext;
    EditText smsNumber;
    String sfName2 = "prefName"; // 프리퍼런스 이름 설정
    String smsText = System.currentTimeMillis()+""; // smsText에 랜덤한 4자리 숫자를 넣으려고 합니다.


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.phonenumber);

    }


    public void sendSMS(View v){
        String smsNum = smsNumber.getText().toString();
        smsText = smsText.substring((smsText.length()-4), smsText.length()); // 랜덤한 4자리 숫자를 넣습니다.

        SharedPreferences prefs = getSharedPreferences(sfName2,0); //프리퍼런스 선언 
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString(smsText, ""); //프리퍼런스에 값을 집어넣는다.
        editor.commit();
}


//다른 액티비티 입니다.

public class lockscreendemo extends PhoneActivity {
	.
	.
	.
	// 제가 EditText에 적은 숫자와 4자리의 랜덤한 숫자를 비교하는 함수입니다.
    public void send(View v) {


        SharedPreferences prefs = getSharedPreferences(sfName2,0);
        prefs.getString(smsText,""); // 앞에서 선언한 같은 프리퍼런스에서 값을 받아옵니다.
        String msg = text.getText().toString();
        text.setText("");//입력창 초기화


        if(msg.equals(smsText)){ // 입력한 값과 프리퍼런스을 비교를 합니다.

            Toast.makeText(this,"잠금이 해제됩니다",Toast.LENGTH_SHORT).show();
            stopService(new Intent(this, SimpleService.class));



            finish();

        }
        else Toast.makeText(this,"입력번호가 틀렸습니다.", Toast.LENGTH_SHORT).show();


    }

안녕하세요 이번에 학교에서 안드로이드를 공부하고 있는 학생입니다.

제가 소스를 짜다가 정말 막히는것이 있어서 질문을 드립니다..

 

간략하게 제가 만들 어플리케이션은 한 액티비티에서 랜덤한 번호를 프리퍼런스에 저장하고

다른 액티비티에서 이 프리퍼런스 값과 제가 입력한 값이 맞으면 인증이 되는 소스를 작성하고 있습니다.

 

그러나 이 값 두 개가 비교가 되지 않습니다.. 제가 소스를 잘못 짰는지 아니면 프리퍼런스끼리 원래

공유가 안 되는지 궁금해서 질문을 드리게 됬습니다..

okokokk2 (390 포인트) 님이 2016년 6월 4일 질문

1개의 답변

+1 추천
프리퍼런스의

putString 메서드는

key, value입니다.

editor.putString(smsText, "");

이렇게 하시면

smsText라는 키 값으로 공백 문자를 저장한게 되죠..

그리고 이는 해당 키의 프리퍼런스 값을 초기화하는것과 동일합니다.

getString에서 없을 경우 defValue를 ""로 주셨으니까요.
모나미153 (17,540 포인트) 님이 2016년 6월 4일 답변
정말 감사합니다 고수님 덕분에 문제가 해결되었습니다!!
...