Android Spinner如何更新所选位置(getSelectedItemPosition())?

时间:2018-08-28 13:51:28

标签: java android spinner

所以我有一个Spinner和一个EditText可以登录。 Spinner的数组拥有“匿名”和“所有者”(意味着数组中“匿名”为0,“所有者”为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 :(得分:0)

我终于找到了正确的答案。

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

        }
    });