Это мой первый пост здесь, так что легко на меня lol! Хорошо, поэтому я новичок в этом, и я работал над этим кодом в течение нескольких дней, и я не могу представить эту концепцию Preferences. Я искал всюду на этом сайте, и я считаю, что этот код должен хорошо работать со всей информацией, которую я просмотрел на этом сайте и других. Я просмотрел множество примеров и до сих пор не понимаю, что я делаю неправильно.Android SharedPreferences force закрывает приложение
Это фрагмент моего основного действия, который сначала инициируется, когда пользователь запускает приложение. У меня есть другое действие в меню опций, которое вычисляет разницу между текущей датой и выбранной датой пользователя, и я хотел бы, чтобы получившееся целое число передавалось в основное действие и отображало значение Toast.
public class SmokeStopperActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
public static final String PREFERENCE_FILENAME = "DaysPassed";
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SharedPreferences preference = getSharedPreferences("DaysPassed", MODE_PRIVATE);
int diffDays = preference.getInt("daysPassed", 0);
Toast.makeText(SmokeStopperActivity.this, ("Days" + diffDays),
Toast.LENGTH_LONG).show();;
Это фрагмент моего второго действия, который вычисляет значение целочисленного diffDays.
long diff = milis2 - milis1;
int diffDays = (int) (diff/(24 * 60 * 60 * 1000) + 30);
Toast.makeText(SetDate.this, (diffDays),
Toast.LENGTH_LONG).show();;
SharedPreferences preference = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor prefEditor1 = preference.edit();
prefEditor1.putInt("daysPassed", diffDays);
prefEditor1.commit();
У меня есть вторая деятельность отправить Тост целого числа diffDays, когда пользователь нажимает на кнопку в предыдущем разделе, второй деятельности и расчеты работают нормально. Тост во втором действии отображает целое число, которое я хочу. Проблема в том, что, когда я использую этот код
SharedPreferences preference = getSharedPreferences("DaysPassed", MODE_PRIVATE);
int diffDays = preference.getInt("daysPassed", 0);
Toast.makeText(SmokeStopperActivity.this, ("Days" + diffDays),
Toast.LENGTH_LONG).show();;
В моем первом действии он закрывается на открытом воздухе. Если я удалю этот код из первого действия, которое откроет приложение, которое не имеет для меня никакого смысла. Все остальные коды, которые я проверил здесь, похоже, используют этот фрагмент точно так же, как я, без проблем, поэтому я не понимаю, что я делаю неправильно. Любая помощь была бы высоко оценена. У меня такое чувство, что это что-то глупое, что я продолжаю игнорировать. Вероятно, из-за того, что я смотрю на код часами на часах lol!
Что говорит logcat? – Snicolas