как увеличить переменную в первом действии в зависимости от значений TextView во втором действии

#android

#Android

Вопрос:

привет всем, у меня есть переменная в первом действии, мне нужно добавить значения, возвращенные из второго действия, и сохранить их в этих переменных. Переключение между действиями происходит несколько раз…. Есть идеи ..? вот фрагмент кода, который каждый раз сохраняет текущее значение, а не его сумму…

 double quantity = Double.parseDouble(s1[1]);
double amount = Double.parseDouble(s1[2]);

if(s1[3].equals(""))
{
    totalint = (quantity*(amount));
    Log.d("hitherebbbbbbb",((Double)totalint).toString());
    grandTotal = totalint; 
}
else
{
    deduction = Double.parseDouble(s1[3]);
    totalint = ((quantity*(amount-deduction*amount/100)));
    Log.d("hitherebbbbbbb",((Double)totalint).toString());
    grandTotal = totalint; 
}
  

Ответ №1:

Если количество переменных остается неизменным, вы всегда можете использовать sharedpreferences. Они очень просты в использовании, и вы можете добавить прослушиватель sharedpreference для обновления вашего действия при изменении значения. Если количество переменных изменяется (например, у вас одновременно есть 3 целых числа, но, возможно, ваш пользователь может изменить его так, чтобы вам понадобилось 5), тогда я бы сделал что-то немного более сложное, что, возможно, не лучший вариант, но мне это нравится, потому что я нахожу это более простым, чем база данных. Дайте мне знать, какой сценарий лучше всего описывает вашу ситуацию, и я предоставлю вам дополнительную документацию.

Комментарии:

1. Спасибо, GQGK .. я думал о том же .. но хотел сделать это в коде без использования ресурсов…

2. @nagesh — Делать это только в коде опасно. Если пользователь нажимает Home, а затем возвращается к вашему приложению, есть вероятность, что система остановила бы промежуточный процесс. В этом случае любые данные, хранящиеся в общих переменных, будут потеряны. Лучший способ избежать проблемы — придерживаться рекомендуемых подходов (startActivityForResult / onActivityResult) или полагаться на один из методов постоянных данных, таких как общие настройки.

3. Спасибо за предложение Ted… Я новичок в Android.. позвольте мне последовать за ними

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

Ответ №2:

Вероятно, вы хотите вернуть значения из второго действия через его намерение возврата и выполнить startActivityForResult() в первом действии.

вы могли бы сделать это, создав намерение во втором действии, установив любые соответствующие возвращаемые данные и вызвав

 setResult(Activity.RESULT_OK, returnIntent);
finish();
  

Вы будете вызваны обратно в методе onActivityResult (), когда второе действие будет завершено. Затем вы должны извлечь значения из возвращаемого значения и обновить свое локальное хранилище.

Комментарии:

1. я сделал все возможное .. извлекая из него значения… но это не добавляет их…

2. единственное, что мне осталось сделать, это сохранить эти значения в общих настройках, а затем добавить .. я не делал этого, предполагая, что это усложняет процесс..

3. Вы могли бы сохранить значения в некотором хранилище объекта приложения. Это имеет более длительный жизненный цикл, чем ваше действие (сохраняется до тех пор, пока выполняется любое действие из приложения). Если вам нужно более длительное сохранение, вам нужно посмотреть файловую систему / настройки / db.