2013-05-01 5 views
1

То, что я пытаюсь сделать, это сохранить некоторые цифры в активности, чтобы я мог добавить их к большему количеству чисел, когда действие начнется снова.Сохранение данных и их использование

Я попытался сохранения номера в режиме паузы, а затем добавить их на новые номера в на Резюме, это своего рода работал, но когда я повернуть телефон снова добавляет сохраненные номера, Что лучший способ пойти об этом

немного кода

if (getIntent().hasExtra("ResultBl100")) { 
     editbl.setText(bl100 + ""); 

     numberOfBl = Integer.parseInt(editbl.getText().toString()); 
     totalSd = (float) (numberOfBl * 0.0024); 
     editsd.setText(String.format("%.1f", totalSd)); 

     b = Float.parseFloat(editsd.getText().toString()); 
     totalCt = (int) Math.ceil(b * 7); 
     ct.setText(Integer.toString(totalCt)); 
    } 

    //sending back to start of app 
    addAgain = (Button) findViewById(R.id.add_again); 
    addAgain.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Amounts.this, 
       ChooseMaterials.class); 
      intent.putExtra("AddMore", ADD_MORE); 
      startActivity(intent); 
     } 
    }); 


@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 

    if (TextUtils.isEmpty(editBl.getText().toString())) { 
     numberOfBl = 0; 
    } else { 
     numberOfBl = Integer.parseInt(editBl.getText().toString(); 
    } 
    if (TextUtils.isEmpty(editSd.getText().toString())) { 
     amountSd = 0; 
    } else { 
     amountSd = Float.parseFloat(editSd.getText().toString()); 
    } 
    SharedPreferences prefs = getSharedPreferences(
      "SavedTotals", Context.MODE_PRIVATE); 

    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putInt("savedBl", numberOfBl); 
    editor.putFloat("savedSd", amountSd); 
    editor.commit(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    SharedPreferences preferences = getSharedPreferences("SavedTotals", 
     Context.MODE_PRIVATE); 

    int blSaved = preferences.getInt("savedBl", 0); 
    float sdSaved = preferences.getFloat("savedSd", 0); 

    int numberBl = blSaved + numberOfBl; 
    editBl.setText(Integer.toString(numberBl)); 

    float amountSds = sdSaved + amountSd; 
    editSd.setText(Float.toString(amountSds)); 
} 

Drawing of Activities

Я все еще застряли на этом может кто-то пожалуйста дайте мне немного больше помощи, внутривенно прилагается изображение, чтобы показать, что я пытаюсь добиться.

Пользователь запускает меню, которое ведет к активности ab или c, где они вводят некоторые числа и заканчиваются в конечном действии, когда отображаются некоторые итоги, когда пользователь нажимает кнопку на последнем действии, я хочу сохранить итоговые значения и отправить пользователя обратно в меню, где он может начать снова, когда пользователь вернется к последнему действию. Будет новый набор итогов. Я хочу добавить сохраненный итог в новый набор итогов и отобразить их.

Iv попробовал в состоянии сохраненного экземпляра и в состоянии экземпляра восстановления сейчас и в той же проблеме, с которой я столкнулся, когда я поворачиваю телефон, он снова добавляет сохраненные итоговые значения

+0

Я прочитал свой вопрос несколько раз, и я до сих пор не понимаю, что * * вы пытаетесь достичь. Забудьте код и жизненный цикл, каков ваш ожидаемый результат? – Simon

+1

Hi Simon iv добавил картинку, чтобы попытаться объяснить ее немного лучше. – Robert

ответ

2

Сохраните ваши ценности в комплекте, я могу дать вам co de сделать это во второй из вас хотелось бы.

+0

Я бы хотел, спасибо – Robert

-1

Вы можете обнаружить поворот устройства на this. При обнаружении вращения отключите функцию onResume() и onPause(). Надеюсь это поможет.

+0

Обработка вращения или другие изменения конфигурации обескуражены, потому что это очень сложно сделать правильно. Плюс, это не решит проблему OP, потому что есть еще сотни причин, по которым приложение может быть убрано и перезапущено. См. Мои заметки по адресу http://stackoverflow.com/questions/3250987/save-cache-when-rotate-device/3252547#3252547 –

+0

@Edward Спасибо за ваш совет. – ACengiz

1

Запись значения Пример

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) 
{ 
    super.onSaveInstanceState(savedInsta nceState); 

    // Save UI state changes to the savedInstanceState. 
    // This bundle will be passed to onCreate if the process is 
    // killed and restarted. 
    savedInstanceState.putBoolean("MyBoolean", true); 
    savedInstanceState.putDouble("myDouble", 1.9); 
    savedInstanceState.putInt("MyInt", 1); 
    savedInstanceState.putString("MyString", "Welcome back to Android"); 
    // etc. 
} 

Extract ценности пример

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) 
{ 
    super.onRestoreInstanceState(savedIn stanceState); 
    // Restore UI state from the savedInstanceState. 
    // This bundle has also been passed to onCreate. 
    boolean myBoolean = savedInstanceState.getBoolean("MyBoolean"); 
    double myDouble = savedInstanceState.getDouble("myDouble"); 
    int myInt = savedInstanceState.getInt("MyInt"); 
    String myString = savedInstanceState.getString("MyString"); 
} 
+0

Привет, я сделал это сейчас, но теперь его не добавляя число, когда активность возобновляется, он добавляет их только в том случае, если я поворачиваю телефон. так что по-прежнему та же проблема. – Robert

Смежные вопросы