简体   繁体   中英

Getting the value in EditText Android

I am having a problem getting the value in the editText of my program. I set the value in a textView so that I can see if the code gets it. But unfortunately it displays something like this:

android.widget.EditText@410e5a58 -> the number after @ sign changes every run in the emulator

Why this happens? This is my code:

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);

        }
    });
}
}

use netSalary instead of net_salary

td = String.valueOf(netSalary);

As you are passing the edit text instead of the double variable

You are passing an object of EditText ( net_salary ) in td so td will have the the string representation of your net_salary object.

You have stored your value in netSalary varibale so pass that instead :

td = String.valueOf(netSalary);

And for your information :

android.widget.EditText@410e5a58 is the string representation of your EditText object (ie calling toString method of your Edittext object will return this string) .

And value after @ is the memory address of your object. And every time it changes because every time your object is created at different memory locations.

尝试这个,

tax_due.setText( net_salary.getText().toString());

If the problem is here:

td = String.valueOf(net_salary);

Then it is because you are trying to treat net_salary , a widget with a string value set in it, as if it were just a string. Try:

td = String.valueOf(net_salary.getText().toString());

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM