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

배열을 앱종류후에도 저장하려고 하는데 어떻게 해야하나요?

0 추천

배열값을 받아서 앱이종료 후에도 저장된 배열값을 유지하게 하고 싶어서 SharedPreferences 을 사용해 보았는데

앱종료 후에도 저장이 않되는데 어떻게 해야 배열을 앱종료 후에도 저장되게 할 수 있을까요?

 

package arabiannight.tistory.com.sharedpreferences;

import android.app.Activity;

public class TestSharedPreferencesActivity extends Activity {
	
	Button button1;
	Button button2;
	Button button3;
	
	long[] pattern= new long[10];
	String[] spattern=new String[10];
	int i;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	i=0;
    	for(int i=0;i<10;i++){
    		pattern[i]=0;
    	}
    		
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        button1 = (Button)findViewById(R.id.button1);
        button2 =(Button)findViewById(R.id.button2);
        button3=(Button)findViewById(R.id.button5);
                      
        button1.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				pattern[i]=1;
SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
		SharedPreferences.Editor editor = pref.edit();
		editor.putLong(spattern[i], pattern[i]);
		editor.commit();
		i++;	
				
		Log.d("value of button1","pattern you selected button1");
		Log.d("button1","pattern[0]"+pattern[0]);
		Log.d("button1","pattern[1]"+pattern[1]);
		Log.d("button1","pattern[2]"+pattern[2]);	
			}
		});//end of button1
               
        button2.setOnClickListener(new OnClickListener() {
		public void onClick(View v) {
       SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
	   	for(int k=0;k<i;k++){
			pattern[k]=pref.getLong(spattern[k], 1);
	   	}
				
	    	Log.d("value of button2","pattern you selected button2");
		Log.d("value of pattern","pattern[0]"+pattern[0]);
		Log.d("value of pattern","pattern[1]"+pattern[1]);
		Log.d("value of pattern","pattern[2]"+pattern[2]);	
			}
		});//end of button2
        
        button3.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				
       SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
       SharedPreferences.Editor editor = pref.edit();
       editor.clear();
       editor.commit();
	    	
	for(int i=0;i<10;i++){
	pattern[i]=0;
	//spattern[i]="0";
	 	}
			
	Log.d("value of reset","pattern you selected reset button");
	Log.d("value of reset","pattern[0]"+pattern[0]);
	Log.d("value of reset","pattern[1]"+pattern[1]);
	Log.d("value of reset","pattern[2]"+pattern[2]);	
	i=0;
		}
	});//end of button3
                		
    }//end of onCreate
    
    //값 불러오기
    private void getPreferences(){
    SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
    pref.getString("hi", "");
    }    
    // 값 저장
    private void savePreferences(){
    SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
	SharedPreferences.Editor editor = pref.edit();
    	//editor.putLong(pattern, pattern[i]);
		editor.putString("hi", "인사");
    	editor.commit();
    }    
    // 값 삭제
    private void removePreferences(){
      SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
    	SharedPreferences.Editor editor = pref.edit();
    	editor.remove("hi");
    	editor.commit();
    }
    
    // 값 모두 삭제
    private void removeAllPreferences(){
      SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE);
      SharedPreferences.Editor editor = pref.edit();
    	editor.clear();
    	editor.commit();
    }  
    
    
}

 

boing (140 포인트) 님이 2014년 6월 9일 질문

2개의 답변

0 추천
배열이면 데이터가 좀 많을텐데 DB를 활용하시는게 어떨까요?

그리고 값을 불러오는 부분에 pref.getString(...)을 하시고는 저장을 안 하네요.. String 변수에 저장을 해야 할 것으로 보입니다.
인연 (31,880 포인트) 님이 2014년 6월 9일 답변
0 추천
spattern값은 어디있고 pattern값은 어디있나요?pattern값은 대충 있는거 같은데 key값에 해당되는 듯한 spattern값은 안보이네요...
YeonMin (17,860 포인트) 님이 2014년 6월 9일 답변
...