안드로이드 onItemClick했을때 포지션이 분명히 0으로 찍혔었는데 sharedpreferences 매소드로 다른 클래스에 값을 보내주어서 값을 읽으면 -1로 뜹니다..

조회수 1244회
 @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Cursor cursor = (Cursor) parent.getItemAtPosition(position);

            int myId = position;

            final int item_id = cursor.getInt(cursor.getColumnIndex(databaseHelper.USER_TABLE_COLUMN_ID));

            PreferencesUtil.setIntPreferences(ListViewActivity.this,"myId",myId);

 }

PreferencesUtil.java

        public static void setIntPreferences(Context context, String key, int value) {
    SharedPreferences p = context.getSharedPreferences("pref", context.MODE_PRIVATE);
    SharedPreferences.Editor editor = p.edit();
    editor.putInt(key, value);
    editor.commit();
}

public static int getIntPreferences(Context context, String key) {
    SharedPreferences sp = context.getSharedPreferences("your_prefs", Activity.MODE_PRIVATE);
    int myIntValue = sp.getInt("your_int_key", -1);
    return myIntValue;
}

다른클래스에서

   int myId = PreferencesUtil.getIntPreferences(detailUserActivity.this,"myId");
   log.i("otherClass","myId = "myId);

로그에 myid=-1이라 뜨네요 ㅜㅜ 아이템 클릭했을때 0번 포지션에있는 아이템 클릭시 0이라는 값을 myId에 보낼 방법 없을까요??

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • setIntPreferences(), getIntPreferences() 함수에서 각각 "pref", "your_pref" 파일에 접근하도록 코드가 작성되어 있습니다. 즉, position을 pref.xml에 저장하고, 값을 읽는 것은 your_pref.xml에서 하기 때문에 디폴트 값인 -1이 반환되는 것 입니다. 하나의 파일에 접근하도록 같은 이름을 사용하세요.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)