Передача данных в новое действие нажатием кнопки

Я новичок в Android Studio и застрял в этой концепции. Я пытаюсь передать данные «Цена + имя» в действие корзины при нажатии кнопки («Добавить в корзину»).

После попытки использования методов намерения кажется, что после нажатия кнопки «Добавить в корзину» открывается корзина с данными, но данные не сохраняются в новом действии для дополнительных добавлений.

Прямо сейчас у меня есть следующее:

 Button button = (Button) findViewById(R.id.addcart);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            //How to pass information here
        }
    });

Я надеюсь передать textView6 и textView7 в действие корзины. Если возможно, мне было бы интересно передать и изображение! Любое начало в этом отношении будет оценено. Спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
966
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Когда вы создаете свое намерение, вы должны:

Intent i = new Intent(this, ToClass.class);
i.putExtra("someName", findViewById(R.id.textView6 ).getText().toString());
i.putExtra("someName2", findViewById(R.id.textView7 ).getText().toString());
startActivity(i); 

А затем во втором действии используйте:

Intent intent = getIntent();
String someName= intent.getStringExtra("someName");
String someName2= intent.getStringExtra("someName2");

«Невозможно разрешить метод, getText»

ttattini 10.05.2018 18:29

Если у меня есть несколько кнопок «Добавить в корзину» на нескольких отдельных действиях, могу ли я просто сделать несколько неиспользуемых «строк», ожидающих getString в классе корзины?

ttattini 10.05.2018 18:30

@ user2592356 Тогда вам нужна какая-то база данных, попробуйте отредактировать свой первый пост тем, что вам действительно нужно

Gazouu 10.05.2018 18:54

Вы говорите, что используете намерение, но что вы делаете с ценностями? Вы сохраняете их где-нибудь в CartActivity?

Для изображения просто передайте ссылку или название изображения. Нет необходимости передавать весь PNG ... и снова использовать намеренный вызов putExtra ().

Да, моя цель - переместить значения «Цена» и «Имя» на соответствующей странице (с помощью кнопки «Добавить в корзину») на страницу корзины. Однако мне нужно, чтобы эти значения закреплялись на странице корзины после их передачи, поскольку пользователь может снова добавить товар в корзину или может добавить другой товар в корзину.

ttattini 10.05.2018 18:32

Это другая проблема. Для этого вам понадобится какое-то хранилище данных. Запишите файл или сохраните в памяти в одноэлементном классе. Много способов сохранить состояние.

Dave 10.05.2018 18:55
Ответ принят как подходящий

Для передачи данных о действиях вы можете использовать то же намерение, что и для открытия нового действия. Вы можете установить такие дополнительные функции:

Intent i = new Intent(context, CartActivity.class);
i.putExtra("price", textView6.getText().toString());
i.putExtra("name", textView7.getText().toString());
startActivity(i);

И затем в onCreate () только что созданного действия вы можете получить эти данные, используя намерение, используемое для открытия этого действия, и получение его дополнений:

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   Intent data = getIntent();
   String price = data.getStringExtra("price");
   String name = data.getStringExtra("name");
}

Надеюсь на эту помощь.

Это только временно передает данные, они не хранят данные там постоянно.

ttattini 10.05.2018 18:35

Для постоянного хранения данных вам необходимо использовать базу данных или общие настройки.

Marc Estrada 10.05.2018 18:54

Другие вопросы по теме