Cannot resolve symbol

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Cannot resolve symbol

    Quellcode

    1. public class MainActivity extends AppCompatActivity{
    2. private SoundPool soundpool;
    3. private int sound1, sound2, sound3, sound4;
    4. @Override
    5. protected void onCreate(Bundle savedInstanceState) {
    6. super.onCreate(savedInstanceState);
    7. setContentView(R.layout.activity_main);
    8. if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) //Ab SDK 21 funktioniert die Erstellung von SoundPool anders
    9. {
    10. AudioAttributes audioAttributes = new AudioAttributes.Builder()
    11. .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) //Bei der App: Speech
    12. .setUsage(AudioAttributes.USAGE_MEDIA)
    13. .build();
    14. soundpool = new SoundPool.Builder()
    15. .setMaxStreams(4)
    16. .setAudioAttributes(audioAttributes)
    17. .build();
    18. }
    19. else
    20. {
    21. soundpool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
    22. }
    23. sound1 = soundpool.load(this, R.raw.a, 1);
    24. sound2 = soundpool.load(this, R.raw.b, 1);
    25. sound3 = soundpool.load(this, R.raw.c, 1);
    26. sound4 = soundpool.load(this, R.raw.d, 1);
    27. public void playSound(View v)
    28. {
    29. switch(v.getId())
    30. {
    31. case R.id.button_sound1:
    32. soundpool.play(sound1,1,0,0,1, 1);
    33. break;
    34. case R.id.button_sound2:
    35. soundpool.play(sound2,1,0,0,1, 1);
    36. break;
    37. case R.id.button_sound3:
    38. soundpool.play(sound3,1,0,0,1, 1);
    39. break;
    40. case R.id.button_sound4:
    41. soundpool.play(sound4,1,0,0,1, 1);
    42. break;
    43. }
    44. }
    45. }
    46. }
    Alles anzeigen
    Ich will über 4 verschiedene Buttons die Methode playSound aufrufen. Allerdings ist das v rot und er schreibt "cannot resolve symbol". Zuerst war das View auch rot, das hat aber daran gelegen, dass ich vergessen habe, es zu importieren. Aber ich verstehe nicht, was er an dem v auszusetzen hat.
    R.id.button_sound1 und die anderen 3 sind auch rot unterwellt, da schreibt er "constant expression required".

    Kann mir da jemand weiterhelfen?
  • Hallo
    Erstmal eins du kannst nicht innerhalb einer Methode eine neue Methode machen.
    Das heißt du bist noch in der onCreate und erstellst eine neu Methode das geht nicht.
    Außerdem wo hast du den denn Button erstellt den du benutzen willst um die playSound(View v) aufzurufen . auch wenn du im XML die Eigenschaft „onClick“ benutzt musst du den Button in der onCrate bekannt machen mit findViewById.

    Quellcode

    1. public class MainActivity extends AppCompatActivity{
    2. private SoundPool soundpool;
    3. private int sound1, sound2, sound3, sound4;
    4. @Override
    5. protected void onCreate(Bundle savedInstanceState) {
    6. super.onCreate(savedInstanceState);
    7. setContentView(R.layout.activity_main);
    8. Button bt = (Button) findViewById(R.id.button1); // hier deine ID eintragen
    9. if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) //Ab SDK 21 funktioniert die Erstellung von SoundPool anders
    10. {
    11. AudioAttributes audioAttributes = new AudioAttributes.Builder()
    12. .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) //Bei der App: Speech
    13. .setUsage(AudioAttributes.USAGE_MEDIA)
    14. .build();
    15. soundpool = new SoundPool.Builder()
    16. .setMaxStreams(4)
    17. .setAudioAttributes(audioAttributes)
    18. .build();
    19. }
    20. else
    21. {
    22. soundpool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
    23. }
    24. sound1 = soundpool.load(this, R.raw.a, 1);
    25. sound2 = soundpool.load(this, R.raw.b, 1);
    26. sound3 = soundpool.load(this, R.raw.c, 1);
    27. sound4 = soundpool.load(this, R.raw.d, 1);
    28. }
    29. public void playSound(View v)
    30. {
    31. switch(v.getId())
    32. {
    33. case R.id.button_sound1:
    34. soundpool.play(sound1,1,0,0,1, 1);
    35. break;
    36. case R.id.button_sound2:
    37. soundpool.play(sound2,1,0,0,1, 1);
    38. break;
    39. case R.id.button_sound3:
    40. soundpool.play(sound3,1,0,0,1, 1);
    41. break;
    42. case R.id.button_sound4:
    43. soundpool.play(sound4,1,0,0,1, 1);
    44. break;
    45. }
    46. }
    47. }
    Alles anzeigen
    Ein Feedback auf Tipps ist auch schön. :P
  • jogimuc schrieb:

    Hallo
    Erstmal eins du kannst nicht innerhalb einer Methode eine neue Methode machen.
    Das heißt du bist noch in der onCreate und erstellst eine neu Methode das geht nicht.
    Danke, das war es. Hätt ich auch selbst draufkommen können :rolleyes:

    Den Button habe ich im XML in der Text Ansicht erstellt:

    Quellcode

    1. <Button
    2. android:id="@+id/button_sound1"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"
    5. android:onClick="playSound"
    6. android:text="Sound 1"
    7. android:textAllCaps="false"/>

    Brauche ich ich die Zeile dann trotzdem?:

    Quellcode

    1. Button bt = (Button) findViewById(R.id.button1);