Изменение положения большого пальца SeekBar с помощью другой кнопки - PullRequest
2 голосов
/ 03 июня 2011

Я пытаюсь переместить позицию панели поиска с помощью кнопки. По сути, у меня есть панель поиска от 0 до 100. У меня есть кнопки, настроенные на произвольные значения (40, 50, 60 и т. Д.). Когда я пытаюсь установить прогресс на панели поиска с помощью кнопки, я получаю ошибку ... Я уже инициализировал seekBar в методе onCreate ().

    SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar1);
    currentProgress = 40;
    seekBar.setMax(100);
    seekBar.setProgress(currentProgress);
    button40.setOnClickListener(button40Listener);

Но при использовании приведенного ниже происходит сбой.

    private OnClickListener button40Listener = new OnClickListener() {
        public void onClick(View v) {
          currentProgress = 40;
          seekBar.setProgress(currentProgress);
        }
    }

Это кажется простым. Есть идеи?

1 Ответ

3 голосов
/ 03 июня 2011

Вам не нужно устанавливать еще один Seekbar.Начальный должен быть в порядке.Без сообщения об исключении и трассировки стека я не уверен, что вызывает сбой.Тем не менее, я только что написал пример и работает так, как вы ожидаете.Возможно, взглянув на мой пример, вы сможете определить свою проблему.

SeekbarTest.java:

package com.example.seekbartest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.SeekBar;

public class SeekbarTest extends Activity {
/** Called when the activity is first created. */
private SeekBar seekBar;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    seekBar = (SeekBar)findViewById(R.id.seekBar1);

    Button fortyPctButton = (Button)findViewById(R.id.buttonFortyPct);
    fortyPctButton.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            seekBar.setProgress(40);
        }
    });

    Button sixtyPctButton = (Button)findViewById(R.id.buttonSixtyPct);
    sixtyPctButton.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            seekBar.setProgress(60);
        }
    });

    Button eightyPctButton = (Button)findViewById(R.id.buttonEightyPct);
    eightyPctButton.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            seekBar.setProgress(80);
        }
    });
    }
}

А вот main.xml, на который ссылается макет:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView 
    android:layout_width="fill_parent" 
    android:text="@string/hello"
    android:id="@+id/textView1" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true"/>

<SeekBar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/seekBar1" 
    android:layout_below="@+id/textView1" 
    android:layout_alignLeft="@+id/textView1" 
    android:layout_alignRight="@+id/textView1"/>

<Button 
    android:layout_width="wrap_content" 
    android:text="40%" 
    android:id="@+id/buttonFortyPct" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/seekBar1"
    android:layout_alignLeft="@+id/seekBar1"/>

<Button 
    android:layout_width="wrap_content" 
    android:text="60%" 
    android:id="@+id/buttonSixtyPct" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/buttonFortyPct" 
    android:layout_alignTop="@+id/buttonFortyPct" 
    android:layout_alignBottom="@+id/buttonFortyPct"/>

<Button 
    android:layout_width="wrap_content" 
    android:text="80%" 
    android:id="@+id/buttonEightyPct" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/buttonSixtyPct" 
    android:layout_alignTop="@+id/buttonSixtyPct" 
    android:layout_alignBottom="@+id/buttonSixtyPct"/>
</RelativeLayout>

Просто создайте новое приложение для Android и замените сгенерированный код + макет на приведенный выше пример.Это должно работать для вас.

Удачи, Крейг

...