亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

主要活動不為變量賦值

主要活動不為變量賦值

臨摹微笑 2022-06-23 10:33:17
在我的作業問題中,我應該根據用戶提供的貸款金額利率和貸款期限來計算每月的貸款支付。這是使用意圖來完成的。當我運行應用程序時,變量的值永遠不會從 0 改變,然后它會轉到應用程序的第二頁,應該顯示結果,但它說 NaN,應該顯示結果。我對 Android 開發非常陌生,我不知道問題出在哪里,所以我發布了我擁有的所有主要 Java 代碼。名為Loan.java 的類package com.example.collegeloanpayoffcalculator;public class Loan{    public static double loanAmount = 0.0;    public static double interestRate = 0.0;    public static int loanDuration = 0;    //public static double monthlyPayment = 0.0;    public double amount;    public double interest;    public double duration;    //public double payment;    public Loan() {}    public Loan(double amount, double interest, double duration)    {        this.amount = amount;        this.interest = interest;        this.duration = duration;    }}名為MainActivity.java的類   public void calculatePayment(View view)    {        Intent intent = new Intent(this, paymentViewActivity.class);        EditText loanAmount = (EditText) findViewById(R.id.loanAmount);        Editable amount = loanAmount.getText();        intent.putExtra("Loan.loanAmount", Double.valueOf(amount.toString()));        EditText interestRate = (EditText) findViewById(R.id.interestRateEditText);        Editable interest = interestRate.getText();        intent.putExtra(String.valueOf(Loan.interestRate), interest);        RadioGroup radioGroup = (RadioGroup) findViewById(R.id.duration);        int selected_id = radioGroup.getCheckedRadioButtonId();        RadioButton radio_b = (RadioButton) findViewById(selected_id);        intent.putExtra(String.valueOf(Loan.loanDuration), radio_b.getText().toString());        startActivity(intent);    }}
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

這是因為在向意圖添加擴展數據時您有不同的密鑰。您在方法中使用以下"Loan.loanAmount"鍵calculatePayment:


intent.putExtra("Loan.loanAmount", Double.valueOf(amount.toString()));

但你期望"loanAmount"在paymentViewActivity課堂上:


public class paymentViewActivity extends AppCompatActivity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       ...

       double amount = intent.getDoubleExtra("loanAmount", loanAmount);

    }

請注意該Intent.putExtra(String, Value)參數使用鍵值格式。字符串是特定值的鍵標識符。


因此,為您的 putExtra 使用相同的密鑰。更安全的方法是在相關活動中使用常量字符串作為鍵。例如,LOAN_AMOUNT_KEY為您的貸款金額值使用常量字符串:


public class paymentViewActivity extends AppCompatActivity {


  public static final String LOAN_AMOUNT_KEY = "loanAmountKey";


    @Override

    protected void onCreate(Bundle savedInstanceState) {

       ...


       // use the key to find the value

       // you won't use the incorrect key because

       // the key is tightly coupled to the activity

       double amount = intent.getDoubleExtra(LOAN_AMOUNT_KEY, loanAmount);

    }

}

然后,在您的calculatePayment方法中,在保存值時使用密鑰:


public void calculatePayment(View view) {

    Intent intent = new Intent(this, paymentViewActivity.class);

    ...

    double amount = Double.valueOf(amount.toString());

    intent.putExtra(paymentViewActivity.LOAN_AMOUNT_KEY, amount);


    ...

 }

筆記:

  1. 為您的活動使用正確的 java 命名約定類名。例如,PaymentViewActivity改為使用paymentViewActivity

  2. 避免public static用于您的模型成員類。你最好使用getter/setter。


查看完整回答
反對 回復 2022-06-23
?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

intent.putExtra(String.valueOf(Loan.interestRate), interest); --> wrong


intent.putExtra(String.valueOf(Loan.loanDuration), radio_b.getText().toString());

您只需要添加字符串名稱,然后您才能從附加組件中獲取它。


intent.putExtra("interest", interest);

intent.putExtra("loanduration", radio_b.getText().toString());


查看完整回答
反對 回復 2022-06-23
  • 2 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號