0

プログラムの editText で値を取得する際に問題が発生しています。コードが値を取得するかどうかを確認できるように、textView に値を設定します。しかし、残念ながら、次のように表示されます。

android.widget.EditText@410e5a58 -> エミュレータで実行するたびに @ 記号の後の数字が変わります

なぜこれが起こるのですか?これは私のコードです:

package com.example.ITax;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/**
* Created with IntelliJ IDEA.
* User: Karla Mae Jaro
* Date: 12/3/12
* Time: 3:58 PM
* To change this template use File | Settings | File Templates.
*/
public class AnnualComputation extends MyActivity
{
String civil_status2;

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.annual_computation);

    Bundle extras = getIntent().getExtras();

    if(extras != null)
    {
        civil_status2 = extras.getString("user_status");
    }

    final Button btn_compute = (Button) findViewById(R.id.btn_compute_from_annual);
    final Button btn_back = (Button) findViewById(R.id.btn_back_from_annual_computation);

    btn_back.setOnClickListener(new Button.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Intent i = new Intent(getApplicationContext(), OpenChoices.class);
            startActivity(i);
        }
    });

    btn_compute.setOnClickListener(new Button.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            final EditText net_salary = (EditText) findViewById(R.id.et_net_annual);
            final EditText tax_due = (EditText) findViewById(R.id.et_taxdue);
            final EditText tax_exe = (EditText) findViewById(R.id.et_taxexemption);

            final TextView txt3 = (TextView) findViewById(R.id.textView3);
            final TextView txt4 = (TextView) findViewById(R.id.textView4);
            final TextView txt5 = (TextView) findViewById(R.id.textView5);
            final TextView txt6 = (TextView) findViewById(R.id.textView6);
            final TextView txt7 = (TextView) findViewById(R.id.textView7);
            final TextView txt8 = (TextView) findViewById(R.id.textView8);


            double netSalary, taxDue, rate = 0, exemption = 0, additional = 0, lowerlimit = 0, total;
            String ns, td, r, e, a, t;

            ns = net_salary.getText().toString();
            netSalary = Double.parseDouble(ns);

            /* Getting the tax exemption */

            if ("SME".equals(civil_status2))
            {
                exemption = 50000;
            }

            else if ("SM1".equals(civil_status2))
            {
                exemption = 25000;
            }

            else if ("SM2".equals(civil_status2))
            {
                exemption = 50000;
            }

            else if ("SM3".equals(civil_status2))
            {
                exemption = 75000;
            }

            else if ("SM4".equals(civil_status2))
            {
                exemption = 100000;
            }

            /* Getting the rate, additional, lowerlimit */

            if(netSalary <= 10000)
            {
                rate = 0.05;
            }

            else if((netSalary > 10000) && (netSalary <=30000))
            {
                rate = 0.1;
                additional = 5000;
                lowerlimit = 10000;
            }

            else if ((netSalary > 30000) && (netSalary <= 70000))
            {
                rate = 0.15;
                additional = 2500;
                lowerlimit = 30000;
            }

            else if((netSalary > 70000) && (netSalary <= 14000))
            {
                rate = 0.20;
                additional = 8500;
                lowerlimit = 70000;
            }

            else if ((netSalary > 140000) && (netSalary <= 250000))
            {
                rate = 0.25;
                additional = 22500;
                lowerlimit = 140000;
            }

            else if((netSalary > 250000) && (netSalary <= 500000))
            {
                rate = 0.30;
                additional = 50000;
                lowerlimit = 250000;
            }

            else if (netSalary > 500000)
            {
                rate = 0.32;
                additional = 125000;
                lowerlimit = 500000;
            }

            taxDue = netSalary - exemption;
            total = taxDue - lowerlimit;
            total = total * rate;
            total = total + additional;

             /* Converting exemption from Double to String */


            td = String.valueOf(net_salary);
            e = String.valueOf(exemption);
            a = String.valueOf(additional);
            r = String.valueOf(rate);
            t = String.valueOf(total);

             /* Placing the value to the editText (textbox) */

            tax_due.setText(td);
            tax_exe.setText(e);
            txt3.setText(civil_status2);
            txt4.setText(td);
            txt5.setText(e);
            txt6.setText(t);
            txt7.setText(r);
            txt8.setText(a);

        }
    });
}
}
4

4 に答える 4

6

netSalaryの代わりに使用net_salary

td = String.valueOf(netSalary);

double変数の代わりに編集テキストを渡すため

于 2012-12-06T13:34:44.380 に答える
1

EditTextnet_salary)のオブジェクトを渡すtdので、オブジェクトtdの文字列表現が得られますnet_salary

値をnetSalaryvaribaleに保存したので、代わりにそれを渡します。

td = String.valueOf(netSalary);

そしてあなたの情報のために:

android.widget.EditText@410e5a58オブジェクトの文字列表現です(つまり、オブジェクトのメソッドをEditText呼び出すと、この文字列が返されます)。toStringEdittext

そして、後の値@はオブジェクトのメモリアドレスです。また、オブジェクトがさまざまなメモリ位置に作成されるたびに、変更されるたびに。

于 2012-12-06T13:34:09.747 に答える
1

これを試して、

tax_due.setText( net_salary.getText().toString());
于 2012-12-06T13:35:03.287 に答える
1

問題がここにある場合:

td = String.valueOf(net_salary);

net_salaryそれは、文字列値が設定されたウィジェットである を単なる文字列であるかのように扱おうとしているからです。試す:

td = String.valueOf(net_salary.getText().toString());
于 2012-12-06T13:35:51.827 に答える