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

问题描述 投票:0回答:1

所以我有一个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;
                    }
                }
            });
    }
}
java android spinner
1个回答
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) {

        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.