Элемент Spinner не получает назначение на строковую переменную и дает ноль в Android - PullRequest
0 голосов
/ 14 декабря 2018

Я столкнулся с проблемой получения значения от Spinners для хранения в переменной String и получения значения null.Я создал глобальную переменную, чтобы получить доступ к их значению во внешней функции -

Вот мой код -

package com.shaikhsakib.mycustomspinner;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;

import android.widget.Spinner;
import android.widget.TextView;



public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{


    String[] countryNames={"INR","CNY","AUD","EUR","USD","NZD"};
    int flags[] = {R.drawable.india, R.drawable.china, R.drawable.australia, R.drawable.portugel, R.drawable.new_zealand};
    private String from, to = "";
    private Spinner spin, spin2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Getting the instance of Spinner and applying OnItemSelectedListener on it
        spin = (Spinner) findViewById(R.id.fromSpinner);
        TextView from = (TextView) findViewById(R.id.fromLabel);
        spin2 = (Spinner) findViewById(R.id.toSpinner);
        TextView to = (TextView) findViewById(R.id.toLabel);
        Button btn = (Button) findViewById(R.id.button);
        spin.setOnItemSelectedListener(this);
        spin2.setOnItemSelectedListener(this);

        CustomAdapter customAdapter=new CustomAdapter(getApplicationContext(),flags,countryNames);
        spin.setAdapter(customAdapter);
        spin2.setAdapter(customAdapter);



    }

    public void convert(View view) {

        spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                                           @Override
                                           public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                                               from = parent.getItemAtPosition(1).toString();
                                           }

                                           @Override
                                           public void onNothingSelected(AdapterView<?> parent) {

                                           }
                                       });

        spin2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                from = parent.getItemAtPosition(1).toString();
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

        TextView result = (TextView) findViewById(R.id.result);

        result.setText("From value: " + from );
    }
    //Performing action onItemSelected and onNothing selected

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

        //gendervalue = parent.getItemAtPosition(position).toString();
        //       Object item = parent.getItemAtPosition(position);
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub
    }
}

Я создал глобальные переменные, из которых получают назначенный элемент выбранные значения счетчика какСтрока, но все еще получает "От значения: ноль".

screen shot of error

Ответы [ 4 ]

0 голосов
/ 14 декабря 2018
  1. Вы не звонили convert(View view)

  2. parent.getItemAtPosition(1).toString() должно быть parent.getItemAtPosition(position).toString()

0 голосов
/ 14 декабря 2018

отметьте это

@Override
    public void onUserInteraction() {
        super.onUserInteraction();
        isUserInteracting = true;
    }

mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView adapterView, View view, int i, long l) {
                if (isUserInteracting) {
                    Toast.makeText(MainActivity.this, 





spinnerTitles[i], Toast.LENGTH_SHORT).show();
                }
            }



 @Override
            public void onNothingSelected(AdapterView adapterView) {

            }
        });
0 голосов
/ 14 декабря 2018

Используйте

from = parent.getItemAtPosition(position).toString();

вместо

from = parent.getItemAtPosition(1).toString();
0 голосов
/ 14 декабря 2018

попробуйте

spin.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                                           @Override
                                           public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                                               String var=countryNames[position];
                                           }

                                           @Override
                                           public void onNothingSelected(AdapterView<?> parent) {

                                           }
                                       });
...