По сути, я работаю над проектом, в котором пытаюсь передать данные объекта другому действию. Что я пытаюсь сделать: В моем основном действии я нажимаю кнопку, которая перенаправляет меня к другому действию, а также передает данные через намерение, которые я затем могу просмотреть в этом действии. Кроме того, поскольку это объект, когда я изменяю его в этом действии, я хочу, чтобы он также менялся в основном действии. Моя проблема в том, что когда я впервые запускаю приложение, данные объекта передаются, и я вижу их в 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, приложение вылетает: иногда показывает сообщение о закрытии приложения, а иногда просто не работает. Как я уже говорил, я не получал никаких сообщений об ошибках, поэтому я даже не знаю, что с ним не так. Пожалуйста помоги!
Это совершенно другое. Мое приложение не просто останавливается случайно, оно останавливается, потому что что-то не так с моим намерением. Я просто не знаю, что это такое.
Прочтите вопрос - он подскажет, с чего начать. Никто может исправить это без отладочной информации, а когда дело доходит до JVM/Android, это подразумевает трассировку стека для сбоев.
@RomanRoshchuk, что содержит макет для activity_3?
@Zoe Извините, я проверил логарифм и нашел несколько действительно странных ошибок.
@S-Sh У меня есть два текста редактирования и две кнопки
@RomanRoshchuk, хотелось бы увидеть сам XML. Я полагаю, фактическая проблема не в намерении.
@S-Sh Я добавил XML в сообщение.




Проблема в следующей строке:
amount = Double.parseDouble(etAmount.getText().toString());
Вы не установили содержимое etAmount в XML, поэтому он выдает NumberFormatException при попытке проанализировать пустую строку.
Большое спасибо, я обратил внимание на совершенно другой кусок кода и даже не увидел этого. Теперь это работает.
Возможный дубликат К сожалению, MyApp остановился. Как я могу это решить?