通过 Intent 将 Class 传递给 Activity(崩溃)

罗曼·罗舒克

基本上,我一直在做一个项目,我试图将对象数据传递给另一个活动。我想要做什么:在我的主要活动中,我单击一个按钮,该按钮将我重定向到另一个活动,并通过意图传递数据,然后我可以在该活动中查看这些数据。此外,由于它是一个对象,当我在此活动中更改它时,我希望它也在主活动中更改。我的问题是,当我第一次启动应用程序时,对象数据被传递,我可以在 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>

活动 3 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=".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 时,应用程序崩溃:有时显示应用程序关闭消息,有时根本不工作。正如我之前所说,我没有收到任何错误消息,所以我什至不知道它有什么问题。请帮忙!

S-Sh

问题出在以下行中:

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

您没有etAmount在 XML 中设置内容,因此NumberFormatException在尝试解析空行时它会抛出

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击(按钮)三后,通过 Intent 应用程序将 EditText 整数传递给 TextView 崩溃

来自分类Dev

通过Android Intent停止工作将字幕传递给Instagram?

来自分类Dev

将当前的Intent作为额外的传递给另一个Activity

来自分类Dev

将ArrayList从传递给Activity

来自分类Dev

如何通过解决错误“Activity 无法转换为 Fragment”将 Fragment 传递给类构造函数?

来自分类Dev

通过引用将Vec传递给函数

来自分类Dev

通过Python将列表传递给C ++

来自分类Dev

通过引用将数组传递给线程

来自分类Dev

通过apply将元组传递给函数

来自分类Dev

通过引用将指针传递给函数

来自分类Dev

通过Mocha将参数传递给程序

来自分类Dev

通过FormSet将参数传递给ModelForm

来自分类Dev

通过$ _GET将URL传递给PHP

来自分类Dev

通过args将字符“&”传递给R

来自分类Dev

通过外壳将参数传递给python

来自分类Dev

通过反射将参数传递给函数

来自分类Dev

通过指针将结构传递给函数

来自分类Dev

是否可以将堆栈,队列或哈希表传递给Intent?

来自分类Dev

是否可以将Stack,Queue或Hashtable传递给Intent?

来自分类Dev

Android:将onResult的scanResult和Intent列表传递给MainActivity

来自分类Dev

将null传递给setInterpolator崩溃

来自分类Dev

将$ sSymbol输入参数传递给Class

来自分类Dev

将Class对象传递给方法

来自分类Dev

将参数作为val传递给class

来自分类Dev

将ArrayList从Fragment类传递给Activity

来自分类Dev

将Activity中的Arraylist传递给片段

来自分类Dev

将ArrayList从Fragment类传递给Activity

来自分类Dev

如何将StatusBarNotification传递给Activity

来自分类Dev

将ArrayList从SurfaceView子类传递给Activity

Related 相关文章

热门标签

归档