Как я могу вызвать строковые итоги из getOrderItemData(), который находится в CartActivity, в FoodListActivity.
Я хочу назвать итоги и поместить их в str_amount, который находится в FoodListActivityplaceOrder().
CartActivity - это действие, вызываемое из FoodListActivity, которое устанавливает корзину. Когда вы нажимаете кнопку размещения заказа, он распечатывает выбранный продукт с общей суммой, рассчитанной в CartActivity.
Корзина
public void getOrderItemData() {
Bundle extras = getIntent().getExtras();
if (extras !=null )
{
String orderItems = extras.getString("orderItems",null);
if (orderItems!=null && orderItems.length()>0)
{
try{
JSONArray jsonOrderItems = new JSONArray(orderItems);
for(int i=0;i<jsonOrderItems.length();i++)
{
JSONObject jsonObject = new JSONObject(jsonOrderItems.getString(i));
Food food = new Food(
jsonObject.getString("FoodName"),
jsonObject.getDouble("FoodPrice")
);
food.cartQuantity = jsonObject.getInt("CartQuantity");
/* Calculate Total*/
Total =Total + (food.cartQuantity* food.foodprice);
totals=String.valueOf(Total);
Orders.add(food);
}
if (Orders.size() > 0)
{
CustomAdapter listAdapter = new CustomAdapter(this,Orders);
lvSummary.setAdapter(listAdapter);
tvTotal.setText("Order Total:RM "+ totals);
}
else
{
showMessage("Empty");
}
}
catch (Exception e)
{
showMessage(e.toString());
}
}
}
}
FoodListActivity
public void placeOrder()
{
Orders.clear();
lOrderItems.clear();
for(int i=0;i<listAdapter.strilists.size();i++)
{
if (listAdapter.strilists.get(i).cartQuantity > 0)
{
Food foods = new Food(
listAdapter.strilists.get(i).foodname,
listAdapter.strilists.get(i).foodprice
);
foods.cartQuantity = listAdapter.strilists.get(i).cartQuantity;
Orders.add(foods);
lOrderItems.add(foods.getJsonObject().toString());
}
}
User user = SharedPrefManager.getInstance(this).getUser();
String str_id=String.valueOf(user.getId());
String str_pickuptime=String.valueOf(String.valueOf(ettime.getText()));
String str_pickupdate=String.valueOf(date);
String str_amount=String.valueOf();
String type = "order";
BackgroundWorker backgroundWorker=new BackgroundWorker(this);
backgroundWorker.execute(type,str_id,str_pickuptime,str_pickupdate,str_amount);
JSONArray jsonArray = new JSONArray(lOrderItems);
openSummary(jsonArray.toString());
}
Вы можете использовать статическую переменную, чтобы вызывать ее из другого Activity.
Пример:
FoodListActivity - определить как:
public class FoodListActivity extends AppCompatActivity {
public static double cartTotal;
...
}
Корзина - звонить откуда угодно:
double cartTotal = FoodListActivity.cartTotal;
Пока вы не убиваете FoodListActivity, ваша переменная cartTotal доступна.
После добавления статики я могу получить общую сумму. Но теперь у меня есть одна проблема, когда предыдущие данные будут вставлены в таблицу только после того, как будет нажата вторая попытка размещения заказа, а текущие нажатые данные не будут вставлены, и нужно дождаться нажатия следующего заказа.
First way:-
вы можете взять общую переменную как общедоступную статическую переменную в базовом действии или в любом месте, из которого вы хотите получить данные, тогда вы можете использовать общую переменную публично в своей корзине.
Например, ниже,
public class FoodListActivity extends Activity {
public static yourdatatype total; //datatype - like int,double or float what you require
}
public class CartActivity extends Activity {
yourdatatype total = FoodListActivity.total;
}
//you can also use this variable in any other activity also.
Second way:-
Вы также можете создать baseActivity в качестве основы для всей деятельности. Это хорошо для более сложного и большого количества кода.
public class BaseActivity extends AppCompactActivity {
public static yourdatatype total; //datatype - like int,double or float
}
И вы можете использовать итоговую переменную непосредственно в любом действии, например, если вы хотите получить итоговую сумму в активности корзины, тогда просто расширяет вашу baseActivity на активность корзины.
нравиться:-
public class CartActivity extends BaseActivity {
yourdatatype gettotal = total//datatype - total get from base activity.
}
попробуйте сохранить его в SharedPreference. тогда вам не нужно будет беспокоиться о состоянии любого из Activity. developer.android.com/reference/android/preference/Preferenc e