Передача данных межу классами java

У меня есть 2 класса и переменные public но при вызове переменных во втором классе переменные равны 0 несмотря, на то что до этого в прошлом классе их значение было другим. MainActivity

public class MainActivity extends Activity {

    public class pizza {

        int price;
        int count;

        void setCount(int x){
            this.count=x;
        }

        int getCount(){
            return this.count;
        }

        void setPrice(int x){
            this.price = x;
        }

        int getPrice(){
            return this.price;
        }

    }

    public pizza pepperoni = new pizza();
    public pizza calzone = new pizza();
    public pizza quattrostagioni = new pizza();
    public pizza quattroformaggi = new pizza();
    public pizza mexican = new pizza();
    public int allOrder = 0;

    TextView setterok;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setterok = findViewById(R.id.TextDown);
        pepperoni.setPrice(300);
        calzone.setPrice(380);
        quattrostagioni.setPrice(300);
        quattroformaggi.setPrice(350);
        mexican.setPrice(430);
        pepperoni.setCount(0);
        calzone.setCount(0);
        quattrostagioni.setCount(0);
        quattroformaggi.setCount(0);
        mexican.setCount(0);
    }

    public void PepperoniClick(View view) {
        pepperoni.setCount(pepperoni.getCount()+1);
        allOrder++;
        if (allOrder % 10 == 0 || allOrder % 10 > 4 || (allOrder % 100 >= 5 && allOrder % 100 < 20)) {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2Null));
        } else if (allOrder % 10 == 1) {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " +  getString(R.string.OrderText2One));
        } else {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2Two));
        }
    }

    public void CalzoneClick(View view) {
        calzone.setCount(calzone.getCount()+1);
        allOrder++;
        if (allOrder % 10 == 0 || allOrder % 10 > 4 || (allOrder % 100 >= 5 && allOrder % 100 < 20)) {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2Null));
        } else if (allOrder % 10 == 1) {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2One));
        } else {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2Two));
        }
    }

    public void QuattroStagioniClick(View view) {
        quattrostagioni.setCount(quattroformaggi.getCount()+1);
        allOrder++;
        if (allOrder % 10 == 0 || allOrder % 10 > 4 || (allOrder % 100 >= 5 && allOrder % 100 < 20)) {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2Null));
        } else if (allOrder % 10 == 1) {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2One));
        } else {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2Two));
        }
    }

    public void QuattroFormaggiClick(View view) {
        quattroformaggi.setCount(quattroformaggi.getCount()+1);
        allOrder++;
        if (allOrder % 10 == 0 || allOrder % 10 > 4 || (allOrder % 100 >= 5 && allOrder % 100 < 20)) {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2Null));
        } else if (allOrder % 10 == 1) {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2One));
        } else {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2Two));
        }
    }

    public void MexicanClick(View view) {
        mexican.setCount(mexican.getCount()+1);
        allOrder++;
        if (allOrder % 10 == 0 || allOrder % 10 > 4 || (allOrder % 100 >= 5 && allOrder % 100 < 20)) {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2Null));
        } else if (allOrder % 10 == 1) {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2One));
        } else {
            setterok.setText(getString(R.string.OrderText1) + " " + allOrder + " " + getString(R.string.OrderText2Two));
        }
    }

    public void goToBacket(View view){
        Intent perehod = new Intent(MainActivity.this , BasketPage.class);
        startActivity(perehod);
    }

}

2 Активность

public class BasketPage extends MainActivity {
        List<Map<String, String>> pizzaNames = new ArrayList<>();

        public void creator() {
            if (pepperoni.getCount() != 0) {
                Map<String, String> map = new HashMap<>();
                map.put("text 1", "Пепперони ");
                map.put("text2", pepperoni.getCount() + " шт.");
                pizzaNames.add(map);
            }
            if (calzone.getCount() != 0) {
                Map<String, String> map = new HashMap<>();
                map.put("text1", "Кальцоне");
                map.put("text2", calzone.getCount() + " шт.");
                pizzaNames.add(map);
            }
            if (quattrostagioni.getCount() != 0) {
                Map<String, String> map = new HashMap<>();
                map.put("text1", "Четыре сезона ");
                map.put("text2", quattrostagioni.getCount() + " шт.");
                pizzaNames.add(map);
            }
            if (quattroformaggi.getCount() != 0) {
                Map<String, String> map = new HashMap<>();
                map.put("text1", "Четыре сыра ");
                map.put("text2", quattroformaggi.getCount() + " шт.");
                pizzaNames.add(map);
            }
            if (mexican.getCount() != 0) {
                Map<String, String> map = new HashMap<>();
                map.put("text1", "Мексиканская ");
                map.put("text2", mexican.getCount() + " шт.");
                pizzaNames.add(map);
            }
        }

        @Override

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.bascket_page);
            creator();
            ListView listView = (ListView) findViewById(R.id.titles);
            String[] from = {"text1" , "text2"};
            int [] to = {R.id.textok1 , R.id.textok2};

            ListAdapter adaptiruy = new SimpleAdapter(this, pizzaNames, R.layout.adapter_backet, from, to);
            listView.setAdapter(adaptiruy);

        }
}

Как передавать в данном случае значения переменных типа pizza между классами?


Ответы (1 шт):

Автор решения: Andrew

Для передачи данных между активностями можно использовать intent который так же используется для перехода между ними:

Intent perehod = new Intent(MainActivity.this , BasketPage.class);
perehod.putExtra("pizzaObj", obj);
startActivity(perehod);

получить объект можно так:

getIntent().getSerializableExtra("pizzaObj");

Но убедитесь что ваш класс поддерживает сериализацию implements Serializable, например :

class MainClass implements Serializable {

    public MainClass() {}

    public static class ChildClass implements Serializable {

        public ChildClass() {}
    }
}
→ Ссылка