【问题标题】:isSelected method always returns falseisSelected 方法总是返回 false
【发布时间】:2013-12-04 00:38:38
【问题描述】:

我将 isSelected 用于复选框。 调试显示该方法是否被选中返回false nevermind。

来自 xml 的部分:

 <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Watched"
        android:layout_margin="10sp" />

和代码:

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

        final DBHandler myMovies = new DBHandler(this);
        final EditText edname = (EditText)findViewById(R.id.editText1);
        final EditText eddetails = (EditText)findViewById(R.id.editText2);
        final EditText edurl = (EditText)findViewById(R.id.editText3);
        final CheckBox chwatched = (CheckBox)findViewById(R.id.checkBox1);
        Button btn = (Button)findViewById(R.id.button1);
        Intent intent = getIntent();
        getId = intent.getStringExtra("id");
        if (getId != null)
        {
            Cursor cursor = myMovies.getMovie(getId);
            cursor.moveToFirst();
            edname.setText(cursor.getString(1));
            eddetails.setText(cursor.getString(2));
            edurl.setText(cursor.getString(3));
            String iswatched = cursor.getString(4);
            if ((iswatched.equals("true")
                chwatched.setSelected(true);
            else
                chwatched.setSelected(false);
            flag=true;  
        }

        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(EditMovie.this , MainActivity.class);
                String name = edname.getText().toString();
                String details = eddetails.getText().toString();
                String url = edurl.getText().toString();        
                boolean wt = chwatched.isSelected();
                String watched = String.valueOf(wt);    
                if (flag)
                    myMovies.updateMovie(new Movie(name, details, url, watched));
                else
                    myMovies.addMovie(new Movie(name, details, url, watched));

                startActivity(intent);

            }
        });
    }

}

由于某种原因,wt 总是收到一个 false...

【问题讨论】:

  • if ((iswatched == "true") || (iswatched == "True"))。哎哟。不要使用== 比较字符串。使用equals()(在你的情况下equalsIgnoreCase()会更合适)。
  • @ZouZou,我的错,在那之前我使用整数并错过了那部分......我刚刚修好了。

标签: java android


【解决方案1】:

尝试使用checkBox.isChecked()checkBox.setChecked(true/false)

【讨论】:

    【解决方案2】:

    尝试: chwatch.isChecked();

    而不是 isSelected。

    【讨论】:

      猜你喜欢
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多