Передача класса в активность через Intent (сбои)

По сути, я работаю над проектом, в котором пытаюсь передать данные объекта другому действию. Что я пытаюсь сделать: В моем основном действии я нажимаю кнопку, которая перенаправляет меня к другому действию, а также передает данные через намерение, которые я затем могу просмотреть в этом действии. Кроме того, поскольку это объект, когда я изменяю его в этом действии, я хочу, чтобы он также менялся в основном действии. Моя проблема в том, что когда я впервые запускаю приложение, данные объекта передаются, и я вижу их в Toast. Однако, как только я помещаю его в текстовое представление, он падает и вообще не передает никаких данных. Хуже всего то, что Android Studio не выдает мне никаких ошибок.

Я пробовал создавать Intent разными способами и даже с помощью пакета. Ничего не работает. Кроме того, я упомянул, что Android Studio не выдает мне никаких ошибок, поэтому я даже не знаю, что конкретно вызывает его сбой. Любая помощь будет оценена.

Это мой класс учетной записи (объект):

public class Account {

    private int accountNumber;
    private double balance;
    private String bankName;

    public Account(int accountNumber, double balance, String bankName) {
        this.accountNumber = accountNumber;
        this.balance = balance;
        this.bankName = bankName;
    }

    public int getAccountNumber() {
        return accountNumber;
    }

    public double getBalance() {
        return balance;
    }

    public String getBankName() {
        return bankName;
    }

    public void withdraw(double amount) {
        balance -= amount;
    }

    public void deposit(double amount) {
        balance += amount;
    }
}

Это основное действие, которое я использую для передачи объекта (btnActivity2 вызывает действие, не связанное с этим вопросом):

public class MainActivity extends AppCompatActivity {
    Account account;
    private int accountNumber;
    private double balance;
    private String bankName;
    private Intent intent;
    private Button btnActivity2;
    private Button btnActivity3;
    private EditText etDisplay;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnActivity2 = findViewById(R.id.btnActivity2);
        btnActivity2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                intent = new Intent(getApplicationContext(), Activity2.class);
                startActivity(intent);
            }
        });
        try {
            account = new Account(2078910, 100000, "Chase");
            accountNumber = account.getAccountNumber();
            balance = account.getBalance();
            bankName = account.getBankName();
            etDisplay = findViewById(R.id.etDisplay);
            etDisplay.setText("Account Number: " + accountNumber + "\nBalance: " + balance + "\nBank Name: " + bankName + "\n");
        } catch (NullPointerException npe) {
            Toast.makeText(getApplicationContext(), npe.getMessage(), Toast.LENGTH_LONG).show();
        } catch (IllegalArgumentException iae) {
            Toast.makeText(getApplicationContext(), iae.getMessage(), Toast.LENGTH_LONG).show();
        }

        btnActivity3 = findViewById(R.id.btnActivity3);
        btnActivity3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(), Activity3.class);
                intent.putExtra("accountNumber", accountNumber);
                intent.putExtra("balance", balance);
                intent.putExtra("bankName", bankName);
                startActivity(intent);
            }
        });
    }
}

Это Activity3, это действие, на которое я пытаюсь перейти:

public class Activity3 extends AppCompatActivity {

    private Intent intent;
    private EditText etAmount;
    private TextView tvInfo;
    private Button withdraw, deposit;
    private double amount;

    private int accountNumber;
    private double balance;
    private String bankName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_3);

        etAmount = findViewById(R.id.etAmount);
        tvInfo = findViewById(R.id.etAccountInfo);
        amount = Double.parseDouble(etAmount.getText().toString());
        try {
            intent = getIntent();
            accountNumber = intent.getIntExtra("accountNumber", 100000);
            balance = intent.getDoubleExtra("balance", 1000);
            bankName = intent.getStringExtra("bankName");
            Toast.makeText(getApplicationContext(), accountNumber + "\n" + balance + "\n" + bankName, Toast.LENGTH_LONG).show();
        } catch (NullPointerException npe) {
            Toast.makeText(getApplicationContext(), npe.getMessage(), Toast.LENGTH_LONG).show();
        } catch (IllegalArgumentException iae) {
            Toast.makeText(getApplicationContext(), iae.getMessage(), Toast.LENGTH_LONG).show();
        }
//        tvInfo.setText("Account Number: " + accountNumber + "\nBalance: " + balance + "\nBank Name: " + bankName + "\n");

        withdraw = findViewById(R.id.btnWithdraw);
        withdraw.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });

        deposit = findViewById(R.id.btnDeposit);
        deposit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });
    }
}

XML основной активности:

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    tools:context = ".MainActivity">

    <ImageView
        android:id = "@+id/imageView2"
        android:layout_width = "412dp"
        android:layout_height = "195dp"
        android:layout_marginStart = "8dp"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintHorizontal_bias = "1.0"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toTopOf = "parent"
        app:srcCompat = "@drawable/complimentary" />

    <Button
        android:id = "@+id/btnActivity2"
        android:layout_width = "378dp"
        android:layout_height = "70dp"
        android:layout_marginStart = "8dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginBottom = "12dp"
        android:text = "Second Activity"
        app:layout_constraintBottom_toTopOf = "@+id/btnActivity3"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintHorizontal_bias = "0.47"
        app:layout_constraintStart_toStartOf = "parent" />

    <Button
        android:id = "@+id/btnActivity3"
        android:layout_width = "378dp"
        android:layout_height = "70dp"
        android:layout_marginStart = "8dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginBottom = "8dp"
        android:text = "Third Activity"
        app:layout_constraintBottom_toBottomOf = "parent"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintHorizontal_bias = "0.444"
        app:layout_constraintStart_toStartOf = "parent" />

    <EditText
        android:id = "@+id/etDisplay"
        android:layout_width = "378dp"
        android:layout_height = "330dp"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "8dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginBottom = "8dp"
        android:ems = "10"
        android:gravity = "start|top"
        android:inputType = "textMultiLine"
        app:layout_constraintBottom_toTopOf = "@+id/btnActivity2"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toBottomOf = "@+id/imageView2" />

</android.support.constraint.ConstraintLayout>

XML-файл Activity3:

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    tools:context = ".Activity3">

    <EditText
        android:id = "@+id/etAmount"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "48dp"
        android:layout_marginEnd = "8dp"
        android:ems = "10"
        android:hint = "Amount $:"
        android:inputType = "numberDecimal"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toBottomOf = "@+id/etAccountInfo" />

    <Button
        android:id = "@+id/btnDeposit"
        android:layout_width = "210dp"
        android:layout_height = "59dp"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "8dp"
        android:layout_marginEnd = "8dp"
        android:layout_marginBottom = "8dp"
        android:text = "Deposit"
        app:layout_constraintBottom_toBottomOf = "parent"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintHorizontal_bias = "0.508"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toBottomOf = "@+id/btnWithdraw"
        app:layout_constraintVertical_bias = "0.083" />

    <Button
        android:id = "@+id/btnWithdraw"
        android:layout_width = "210dp"
        android:layout_height = "59dp"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "60dp"
        android:layout_marginEnd = "8dp"
        android:text = "Withdraw"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintHorizontal_bias = "0.497"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toBottomOf = "@+id/etAmount" />

    <EditText
        android:id = "@+id/etAccountInfo"
        android:layout_width = "258dp"
        android:layout_height = "186dp"
        android:layout_marginStart = "8dp"
        android:layout_marginTop = "64dp"
        android:layout_marginEnd = "8dp"
        android:ems = "10"
        android:gravity = "start|top"
        android:inputType = "textMultiLine"
        app:layout_constraintEnd_toEndOf = "parent"
        app:layout_constraintHorizontal_bias = "0.496"
        app:layout_constraintStart_toStartOf = "parent"
        app:layout_constraintTop_toTopOf = "parent" />
</android.support.constraint.ConstraintLayout>

Когда я нажимаю на btnActivity3, приложение вылетает: иногда показывает сообщение о закрытии приложения, а иногда просто не работает. Как я уже говорил, я не получал никаких сообщений об ошибках, поэтому я даже не знаю, что с ним не так. Пожалуйста помоги!

Возможный дубликат К сожалению, MyApp остановился. Как я могу это решить?

Zoe stands with Ukraine 19.05.2019 21:18

Это совершенно другое. Мое приложение не просто останавливается случайно, оно останавливается, потому что что-то не так с моим намерением. Я просто не знаю, что это такое.

Roman Roshchuk 19.05.2019 21:20

Прочтите вопрос - он подскажет, с чего начать. Никто может исправить это без отладочной информации, а когда дело доходит до JVM/Android, это подразумевает трассировку стека для сбоев.

Zoe stands with Ukraine 19.05.2019 21:21

@RomanRoshchuk, что содержит макет для activity_3?

S-Sh 19.05.2019 21:22

@Zoe Извините, я проверил логарифм и нашел несколько действительно странных ошибок.

Roman Roshchuk 19.05.2019 21:26

@S-Sh У меня есть два текста редактирования и две кнопки

Roman Roshchuk 19.05.2019 21:27

@RomanRoshchuk, хотелось бы увидеть сам XML. Я полагаю, фактическая проблема не в намерении.

S-Sh 19.05.2019 21:32

@S-Sh Я добавил XML в сообщение.

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

Ответы 1

Ответ принят как подходящий

Проблема в следующей строке:

 amount = Double.parseDouble(etAmount.getText().toString());

Вы не установили содержимое etAmount в XML, поэтому он выдает NumberFormatException при попытке проанализировать пустую строку.

Большое спасибо, я обратил внимание на совершенно другой кусок кода и даже не увидел этого. Теперь это работает.

Roman Roshchuk 19.05.2019 21:47

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