Я хочу сделать небольшой расчет и передать значение в TextView на другой деятельности - PullRequest
1 голос
/ 23 сентября 2019

Я хочу умножить значение одного из TextViews на 100, отправить его в класс Model и показать его в TextView для другого действия.

Я пробовал это, но не получилось.Я получаю эту ошибку

android.content.res.Resources $ NotFoundException

    private void getProductDetails(String productID)
{
    DatabaseReference productRef = FirebaseDatabase.getInstance().getReference().child("Products");
    productRef.child(productID).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot)
        {
            if(dataSnapshot.exists())
            {
                Products products = dataSnapshot.getValue(Products.class);

                productName.setText(products.getPname());
                productPrice.setText(Integer.valueOf(products.getPrice()) * 100);
                productDescription.setText(products.getDescription());
                Picasso.get().load(products.getImage()).into(productImage);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

enter image description here

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Такая проблема обычно возникает, когда вы пытаетесь поместить Interger в текст textview.

что-то вроде этого:

final String valueStr = textview.getText().toString(); // valueStr = 1
int value = Interger.parseInt(valueStr)
textview.setText(value + 100)

вместо установки текста в 101, он попытаетсянайдите значение 101 в таблице R, потому что вы передаете значение Int в setText.Просто проверьте ваш setText, и вы, вероятно, найдете строку со значением int вместо строки

Ваша проблема в этой строке:

productPrice.setText(Integer.valueOf(products.getPrice()) * 100);

Попробуйте это:

productPrice.setText(Integer.valueOf(products.getPrice()) * 100 + "");
1 голос
/ 23 сентября 2019

Попробуйте использовать Integer.parseInt () для конвертации, которую вы пытаетесь конвертировать, обязательно запишите ее в try catch (если введенная строка недопустима для анализа в Integer)

try{
  cartMap.put("price",(Integer.parseInt(productPrice.getText().toString())*100))
}catch(Exception ee){
  ee.printStackTrace();
}

Если выЧтобы передать весь объект следующему действию, используйте следующий код:

Intent intent = new Intent(ProductDetails2Activity.this,CartActivity.class);
intent.putExtra("yourKey",cartMap);
startActivity(intent);

И в onCreate следующего действия получите вашу хэш-карту как:

Intent intent = getIntent();
HashMap<String, Object> hashMap = 
     (HashMap<String, Object>)intent.getSerializableExtra("yourKey");
priceTextView.setText(hashMap.get("price")+"");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...