0

我正在尝试实现第二个搜索栏,但出于某种奇怪的原因,当搜索栏移动时,它们都在修改相同的文本。我上下查看了源代码,但无法识别问题(我知道我忽略了一些非常简单的东西——有人能发现吗?)

爪哇:

     private long rowID; 
     private EditText nameEt;
     private EditText capEt;
     private EditText codeEt;
     private TimePicker timeEt;
     private TextView ssidTextView;
     private TextView sbTv;
     private SeekBar bar;
     private SeekBar bar2;
     private SeekBar bar;
     private SeekBar bar2;
     private TextView textProgress,textAction;
     private TextView textProgress2,textAction2;



       public void onCreate(Bundle savedInstanceState) 
       {
          super.onCreate(savedInstanceState); 
          setContentView(R.layout.add_country);
          bar = (SeekBar)findViewById(R.id.seekBar1);
          bar.setOnSeekBarChangeListener(this);
          bar2 = (SeekBar)findViewById(R.id.seekBar2);
          bar2.setOnSeekBarChangeListener(this);



          textProgress = (TextView)findViewById(R.id.textViewProgress);
          textProgress2 = (TextView)findViewById(R.id.textViewProgress2);

          textAction = (TextView)findViewById(R.id.textViewAction);
          textAction2 = (TextView)findViewById(R.id.textViewAction2);

      }

       @Override
       public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {     

        textProgress.setText(progress+"MBPS");
       }

        public void onProgressChanged2(SeekBar seekBar2, int progress,
                boolean fromUser) {


        textProgress2.setText(progress+"MBPS");
4

3 回答 3

0

这是一个完整的解决方案

活动

public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener{

    SeekBar bar1;
    SeekBar bar2;
 TextView textProgress1,textProgress2;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            bar1=(SeekBar)findViewById(R.id.seekBar1);
            bar2=(SeekBar)findViewById(R.id.seekBar2);
            bar1.setOnSeekBarChangeListener(this);
            bar2.setOnSeekBarChangeListener(this);
            textProgress1=(TextView)findViewById(R.id.textView1);
            textProgress2=(TextView)findViewById(R.id.textView2);
        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            switch (seekBar.getId()) {
            case R.id.seekBar1:
                textProgress1.setText(progress +" MBPS");
                break;
          case R.id.seekBar2:
              textProgress2.setText(progress +" MBPS");
                break;
            default:
                break;
            }
        }
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
 }

活动主XML

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center" >

<SeekBar
    android:id="@+id/seekBar1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="39dp" 
    />

<SeekBar
    android:id="@+id/seekBar2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/seekBar1"
    android:layout_marginTop="38dp" />

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/seekBar1"
    android:layout_alignParentLeft="true"
    android:layout_marginBottom="38dp"
    android:text="TextView Progrss 1" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/seekBar1"
    android:layout_marginTop="19dp"
    android:text="TextView Progrss 2"  />

</RelativeLayout>
于 2013-04-18T04:22:41.027 回答
0

这里调用的唯一函数是第一个函数:

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {    
    textProgress.setText(progress+"MBPS");
}

在此函数中,您应该检查传递了哪个 SeekBar 并做出相应的反应:

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {     
    if (seekBar.equals(bar)) {//do something for bar}
    else if (seekBar.equals(bar2)) {//do something for bar2}
}

如果您的布局是在 XML 中定义的(无论如何您都应该在像这样的简单应用程序中这样做),然后比较 SeekBars id:

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {     
    if (seekBar.getId() == R.id.seekbar_1) {//do something for bar}
    else if (seekBar.getId() == R.id.seekbar_2) {//do something for bar2}
}
于 2013-04-18T04:10:12.837 回答
0

您的代码中的错误在于 seekbar 侦听器调用的方法是上面带有@override表示法的方法。

我的解决方案将在搜索完成后更改文本,如果您需要实时更改,例如:一旦开始搜索就更改文本,

实现以下方法......

[ http://developer.android.com/reference/android/widget/SeekBar.OnSeekBarChangeListener.html#onProgressChanged(android.widget.SeekBar , int, boolean)][1] 并使用下面指定的相同逻辑...

实施

@override
public void onStopTrackingTouch(SeekBar s){
   switch (arg0.getId()) {
    case R.id.seekBar1:
        setText("ONE");
                    break;
    case R.id.seekBar2:
        setText("TWO");
                    break;  
    default:
        break;        
    }

}

我希望这能解决问题。

于 2013-04-18T05:02:42.503 回答