나는 60 개의 체크 박스의 데이터를 저장해야하는 앱을 만들고있다. 사용자가 제출 단추를 누르면 데이터가 읽 t집니다. 앱을 다시 시작할 때 사용자 선택을 표시하고 싶습니다.공유 환경 설정을 사용하여 여러 확인란에 대한 데이터를 저장하는 방법은 무엇입니까?
공유 환경 설정을 사용하여이를 수행하려고하지만 실수를하고있는 위치를 알지 못합니다. 다음과 같이
Y 코드는 다음과 같습니다 당신이 지속적으로 온 클릭() 메서드에서 true로 같은 SharedPreference "checkboxValue"을 설정하는 것처럼
import java.util.ArrayList;
import java.util.Calendar;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
public class Labs extends Activity implements OnClickListener {
ArrayList <Calendar> Cal= new ArrayList <Calendar>(60);
ArrayList <CheckBox> l= new ArrayList <CheckBox>(60);
ArrayList <Boolean> checkboxValue = new ArrayList <Boolean>(60);
private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mPrefsEditor;
private Button submitButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_labs);
addenable();
submitButton = (Button)findViewById(R.id.button1);
submitButton.setOnClickListener(this);
mSharedPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE);
mPrefsEditor = mSharedPreferences.edit();
//Initialise check boxes for every slot
for (int i = 101; i <= 160; i++) {
String viewId = "checkBox" + i;
l.add(i-101, (CheckBox) findViewById(getResources().getIdentifier(viewId, "id", getPackageName())));
checkboxValue.add(i-101, mSharedPreferences.getBoolean("saveLogin", false));
}
for(int j=0; j<60; j++)
{
if (checkboxValue.get(j) == true) {
l.get(j).setChecked(true);}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void addenable(){
}
public int Day(int a)
{
int d=0;
int x = a;
x--;
if(x>=30)
d = (x/6)-3;
else
d=(x/6)+2;
return d;
}
public int Hour(int a)
{
int hr=0;
int x=a;
x--;
hr=(x%6)+8;
if((x%6)>=4)
hr--;
if(x>=30)
hr = hr+6;
return hr;
}
public int Min(int a)
{
int m=0;
int x=a;
if(x%6==5)
m=50;
if(x%6==0)
m=40;
return m;
}
public void getdata(View V){
for(int i=0; i<60; i++)
{
Cal.add(i, Calendar.getInstance());
Cal.get(i).set(Calendar.DAY_OF_WEEK, Day(i+1));
Cal.get(i).set(Calendar.HOUR_OF_DAY, Hour(i+1));
Cal.get(i).set(Calendar.MINUTE, Min(i+1));
Cal.get(i).set(Calendar.SECOND, 0);
}
//Intents
Intent setVibration = new Intent();
setVibration.setClass(this, AlarmReciever.class);
Intent setNormal = new Intent();
setNormal.setClass(this, RingerMode.class);
//PENDING INTENTS
ArrayList <PendingIntent> Lab_V= new ArrayList <PendingIntent>(60);
ArrayList <PendingIntent> Lab_N= new ArrayList <PendingIntent>(60);
for(int i=0; i<60; i++)
{
Lab_V.add(PendingIntent.getBroadcast(this, i, setVibration,
PendingIntent.FLAG_UPDATE_CURRENT));
Lab_N.add(PendingIntent.getBroadcast(this, i, setNormal,
PendingIntent.FLAG_UPDATE_CURRENT));
}
// create the object
AlarmManager mAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
for(int i=0; i<60; i++)
{
if(l.get(i).isChecked()){
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Cal.get(i).getTimeInMillis(), 7*24*60*60*1000, Lab_V.get(i));
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Cal.get(i).getTimeInMillis()+50*60*1000, 7*24*60*60*1000, Lab_N.get(i));
Toast.makeText(this, "L"+(i+1), Toast.LENGTH_SHORT).show();
}
}
}
public void onClick(View view) {
if (view == submitButton) {
for(int i=0; i<60; i++)
{
if (l.get(i).isChecked()) {
mPrefsEditor.putBoolean("checkboxValue" , true);
mPrefsEditor.commit();
} else {
mPrefsEditor.clear();
mPrefsEditor.commit();
}
}
getdata(view);
}
}
}
현재 코드의 문제는 무엇입니까? 당신은 실제로 작동하지 않는 것에 대해 아무 말도하지 않았습니다. (충돌하고 그냥 저장하지 않는 것입니까?) –
아니, 그냥 아무것도 저장하지 않습니다. – Ish
진행 상황이 있습니까? 그렇다면 답을 올바른 것으로 표시하거나 후속 조치를 요청하십시오. – RScottCarson