【问题标题】:Spinner item does not work微调项目不起作用
【发布时间】:2015-02-02 01:26:20
【问题描述】:

我有一个带有微调器下拉菜单的应用程序。当我从微调器下拉菜单中点击 Admin 时,它不会转到 Admin.class。与教师相同,当我从微调器下拉菜单中点击教师时,它不会转到 Student.class。\

我的代码:

public class Home extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        String[] sp1 = getResources().getStringArray(R.array.Level);
        Spinner spinner = (Spinner)findViewById(R.id.spinner);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,sp1);
        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

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

                String s = parent.getItemAtPosition(position).toString();
                if(s=="Admin")
                    startActivity(new Intent(Home.this,Admin.class));
                if(s=="Teacher")
                    startActivity(new Intent(Home.this,Student.class));   
            }

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

【问题讨论】:

标签: android string spinner string-comparison


【解决方案1】:

使用 s.eauals() 方法代替 ==opetator.... 因为您在这里比较是为了参考而不是为了价值。

【讨论】:

  • 我使用这个,现在从登录页面直接转到 Student.class 并跳过实现我的微调器的 Home Class
  • 因为你做错了。自动调用第 0 个项目选择。
【解决方案2】:

使用firstString.equals(secondString) 函数比较字符串,而不是== 运算符。

该函数检查字符串的实际内容,== 运算符检查对对象的引用是否相等。请注意,字符串常量通常是“内部”的,因此具有相同值的两个常量实际上可以与== 进行比较,但最好不要依赖它。

这样做

@Override
public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
    String s = parent.getItemAtPosition(position).toString();
    if(s.equals("Admin"))
        startActivity(new Intent(Home.this,Admin.class));
    if(s.equals("Teacher"))
        startActivity(new Intent(Home.this,Student.class));
}

编辑

public class Home extends Activity {
private boolean spinnerAutoSelectionDone = false;
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    String[] sp1 = getResources().getStringArray(R.array.Level);
    Spinner spinner = (Spinner)findViewById(R.id.spinner);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,sp1);
    spinner.setAdapter(adapter);

    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

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

            if(!spinnerAutoSelectionDone){
                spinnerAutoSelectionDone = true;
                return;
            }

            String s = parent.getItemAtPosition(position).toString();
            if(s.equals("Admin"))
                startActivity(new Intent(Home.this,Admin.class));
            if(s.equals("Teacher"))
                startActivity(new Intent(Home.this,Student.class));   
        }

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

【讨论】:

  • 此代码现在可以使用,但适用于教师而不是管理员
  • 检查你得到的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多