我不明白这句话试图在JAVA中告诉我

时间:2016-01-18 15:54:11

标签: java android

以下是我试图解决的问题的描述:

  

每当用户移动两个滑块中的任何一个时,都会调用ToneGenerator类的onProgressChanged方法。通过运行连接到笔记本电脑的应用程序验证这一点,并使用日志记录窗口跟踪从日志中获取的onPress消息。当滑块一直向左并一直向右时获得的进度值是多少?

     

由于无论移动了哪个滑块,都会调用相同的方法,我们如何确定移动的滑块?提示:检查方法的参数。

     

发送给该方法的参数之一是seekBar,它是一个指向移动滑块的对象引用。通过在其API中使用方法确定此对象的ID(一旦您键入对象引用后跟一个点,AndroidStudio会帮助解决此问题)。在方法顶部添加一个print语句,以在Logcat中显示此ID。

     

保存应用并在设备上重新运行。移动滑块并记下日志中显示的ID。

     

可以从布局视图中获取任何控件的实际ID。在方法顶部添加第二个print语句,以显示两个滑块的ID。回想一下,当您在Java中引用它时,必须在XML ID前面加上“R.id。”。 “

我遇到了最后一段的问题。

以下是代码:

package jr.eecs1022.tonegenerator;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.SeekBar;

public class ToneGenerator extends AppCompatActivity implements SeekBar.OnSeekBarChangeListener
{
    private ToneEmitter toneEmitter = null;

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
    {
        if (toneEmitter != null)
        {
            System.out.println();
            System.out.println(seekBar.getId());
            System.out.println("onPress called with " + progress);
        }
    }

    public void onStartTrackingTouch(SeekBar seekBar)
    {
    }

    public void onStopTrackingTouch(SeekBar seekBar)
    {
    }

    private void setFrequency(double frequency)
    {
        System.out.println("setFrequency called with " + frequency);
    }

    private void setAmplitude(double amplitude)
    {
        System.out.println("setAmplitude called with " + amplitude);
    }


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

        SeekBar seekbar = (SeekBar) findViewById(R.id.changeAmplitude);
        seekbar.setOnSeekBarChangeListener(this);
        seekbar = (SeekBar) findViewById(R.id.changeFrequency);
        seekbar.setOnSeekBarChangeListener(this);
    }

    @Override
    public void onResume()
    {
        super.onResume();
        toneEmitter = new ToneEmitter();
        this.setAmplitude(0.0);
        this.setFrequency(ToneEmitter.NOTE_C);
        SeekBar seekBar = (SeekBar) findViewById(R.id.changeAmplitude);
        seekBar.setProgress(0);
        seekBar = (SeekBar) findViewById(R.id.changeFrequency);
        seekBar.setProgress(0);
    }

    @Override
    public void onPause()
    {
        toneEmitter.shutdown();
        toneEmitter = null;
        super.onPause();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_tone_generator, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings)
        {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

1 个答案:

答案 0 :(得分:0)

这意味着您可以使用R类来引用任何控件的ID。

所以,要试一试,它说你应该将以下内容添加到onProgressChanged方法的顶部:

System.out.println(R.id.slider1 + " " + R.id.slider2); //Use the actual id of the sliders