通过开关启用可见性

时间:2014-07-01 17:03:19

标签: android switch-statement fragment visible

在我的一个片段中,我有编辑文本,开关,搜索栏等。我想要一个开关的'on'位置来启用其他编辑文本的可见性等。我尝试了几种不同的变体,如下所示。 (这个规则在哪里重要)?谢谢。

我是否需要在开始和不间断时使用我的搜索条或使用其他参数来确定可见性?

我尝试了很多变化,所以我不知道要发布什么代码,但基本上我已经尝试过这样的事情了。 XML非常标准,如果您需要它,请告诉我..

View view = inflater.inflate(R.layout.life_lay1, container, false);
    seekBar = (SeekBar) view.findViewById(R.id.seekBar1);
    textView1 = (TextView) view.findViewById(R.id.textView1);
    EditText01 = (EditText) view.findViewById(R.id.EditText01);
    //ib1 = (ImageButton) view.findViewById(R.id.ib1);
//  ib1.setOnClickListener(this);
    ib2 = (ImageButton) view.findViewById(R.id.ib2);
    ib2.setOnClickListener(this);
    switch3 = (Switch) view.findViewById(R.id.switch3);

    switch3.setVisibility(View.INVISIBLE);

    if(switch3.getText() =="Yes" ) // have tried string resource as well.
    {
        switch3.setVisibility(View.VISIBLE);
    }
    seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 

      {
          int  progress = 18;
            @Override
          public void onProgressChanged(SeekBar seekBar,int progresValue, boolean fromUser) 
          {
            progress = progresValue;
            if(progresValue < 18)
            {
                 textView1.setText(":  " + 18);
            }
          }

          @Override
          public void onStartTrackingTouch(SeekBar seekBar) 
          {
                textView1.setText(":  " + seekBar.getProgress());
          }

          @Override
          public void onStopTrackingTouch(SeekBar seekBar)
          {
              if(seekBar.getProgress() < 18)
              {
                 textView1.setText(":  "+ 18);
              }
              else
              {
              textView1.setText(":  " + seekBar.getProgress());
              }


          }
      });

1 个答案:

答案 0 :(得分:1)

Switch不是EditTextTextView,因此它没有getText方法。

您应该检查是否使用isChecked进行了检查,如果已选中则会返回true。

所以它将是

if(switch3.isChecked() ) // have tried string resource as well.

要使其成为动态,您应该实现onCheckedChanged侦听器,因此每次用户更改其状态时都会更新可见性。

switch3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            switch3.setVisibility(isChecked ? View.VISIBLE : View.INVISIBLE);
        }
});

但是等等,停下来!为什么要更改switch3的可见性?这将使它无法再次改变它。也许你想用其他东西改变switch3

p.s。记得检查字符串使用.equals()