monikgilang
monikgilang

Reputation: 11

if else statement android (the first if always activating)

i have the following code

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    inputListenerKeSeleksiSpinner();
    seleksiItemSpinner();
}

// Menambahkan spinner1 agar ketika dipilih keluar toast
public void inputListenerKeSeleksiSpinner()
{
    spinner1=(Spinner)findViewById(R.id.spinner1);
    spinner1.setOnItemSelectedListener(new ListenerKhusus());
    spinner2=(Spinner)findViewById(R.id.spinner2);
    spinner2.setOnItemSelectedListener(new ListenerKhusus());
}

// Mengambil value dari Spinner
public void seleksiItemSpinner()
{
    spinner1=(Spinner)findViewById(R.id.spinner1);
    bulan=spinner1.getSelectedItem().toString();
    spinner2=(Spinner)findViewById(R.id.spinner2);
    umur=spinner2.getSelectedItem().toString();

    if("Januari".equals(bulan) && "18".equals(umur))
    {
        hasil="Perempuan";
    } else
    if("Januari".equals(bulan) && "19".equals(umur))
    {
        hasil="Laki-laki";
    };

    btnKirim=(Button)findViewById(R.id.btnKirim);

    btnKirim.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v)
        {
            Toast.makeText(MainActivity.this, "Hasilnya adalah: " + hasil, Toast.LENGTH_LONG).show();
        }
    });
}

but if i select Januari".equals(bulan) && "19".equals(umur) the answer is always "perempuan" not "laki-laki".. can anyone help me pls??? sorry, my english is bad :D

Upvotes: 0

Views: 255

Answers (2)

PaF
PaF

Reputation: 3477

You're getting the data from the Spinners on activity creation, so whatever the Spinners have selected by default is what you'll get. Instead, get the selected data from the Spinners only when the button is clicked:

public void seleksiItemSpinner()
{
    btnKirim=(Button)findViewById(R.id.btnKirim);

    btnKirim.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v)
        {
            bulan=spinner1.getSelectedItem().toString();
            umur=spinner2.getSelectedItem().toString();

            if("Januari".equals(bulan) && "18".equals(umur))
            {
                hasil="Perempuan";
            } else
            if("Januari".equals(bulan) && "19".equals(umur))
            {
                hasil="Laki-laki";
            };

            Toast.makeText(MainActivity.this, "Hasilnya adalah: " + hasil, Toast.LENGTH_LONG).show();
        }
    });
}

Upvotes: 1

NameSpace
NameSpace

Reputation: 10177

The reason its giving you the same answer is because you're only asking what's selected in the spinners in the "onCreate." Your onClick is not asking what been selected at the time of the click, its just telling you what was selected when you created the activity.

Solution: move logic to query spinners to inside the onClick.

Upvotes: 0

Related Questions