Android Spinner, как обновить выбранную позицию (getSelectedItemPosition ())? - PullRequest
0 голосов
/ 28 августа 2018

Итак, у меня есть Spinner и EditText для входа. Массив Spinner владеет «Anonymous» и «Owner» (означает, что «Anonymous» равен 0, а «Owner» равен 1 в массиве). При выборе «Анонимный» пароль - «0000», а при выборе «Владелец» - «1234».

Но когда я выбираю «Владелец», пароль «1234» неверен, и Logcat показывает «Аноним». Как я могу выбрать «Владелец»? Может быть, getSelectedItemPosition () не так?

Мой код:

public class PinEnterActivity extends AppCompatActivity {

    Button nextButton;
    EditText pinEditText;
    Spinner pinRoleSpinner = null;
    private String TAG = "PinEnterActivity";
    private Byte selectedUserRole = 0;


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

    nextButton = findViewById(R.id.nextActivity)
    pinEditText = findViewById(R.id.pinET);
    pinRoleSpinner = findViewById(R.id.roleSpinner);

    selectedUserRole = (byte) pinRoleSpinner.getSelectedItemPosition();

        switch (selectedUserRole) {
        case 0:
            Log.i(TAG, "Anonymous");
            SharedPreferences sharedpreferences = getSharedPreferences("My_Prefs", 0);
            final String password = sharedpreferences.getString("pass", "");
            nextButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (pinEditText.getText().toString().equals("0000")) {
                        Intent intent = new Intent(PinEnterActivity.this, NextActivity.class);
                        startActivity(intent);
                    } else {
                        pinEditText.setError("Password incorrect");
                        Animation shake = AnimationUtils.loadAnimation(PinEnterActivity.this, R.anim.shake);
                        pinEditText.startAnimation(shake);
                        return;
                    }
                }
            });
            break;

        case 1:
            Log.i(TAG, "Owner");

            SharedPreferences preferences = getSharedPreferences("My_Prefs", 0);
            final String password2 = preferences.getString("pass", "");

            nextButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (pinEditText.getText().toString().equals("1234")) {
                        Intent intent = new Intent(PinEnterActivity.this, NextActivity.class);
                        startActivity(intent);
                    }else{
                        pinEditText.setError("Password incorrect");
                        Animation shake = AnimationUtils.loadAnimation(PinEnterActivity.this, R.anim.shake);
                        pinEditText.startAnimation(shake);
                        return;
                    }
                }
            });
    }
}

1 Ответ

0 голосов
/ 29 августа 2018

Я наконец-то узнал правильный ответ.

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

            switch(selectedUserRole) {

               case 0:
                      Log.i(TAG, "Anonymous");
                      // Code
                   break;

               case 1:
                      Log.i(TAG, "Owner");
                      // Code
                   break;

               default;
                     // Code
                   break;

            }
        }

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

        }
    });
...