2013-03-15 1 views
0

비슷한 스레드에 대해 온라인으로 살펴본 적이 있지만 도움이되지는 않았습니다.내 코드를 실행하려고 할 때마다 내 에뮬레이터가 충돌합니다.

나는 onClick 버튼 사운드를 만드는 간단한 작업을 수행하려고합니다. 나는 몇 시간 동안 코드를 올바르게 작성하려고 노력했는데, 곧 작동 할 것처럼 보이지만 실행되지는 않습니다.

"불행히도 시도는 중지되었습니다." 내 LogCat 파일이 200 이상의 오류 메시지와 함께 열리는 것은 의미가 없습니다.

내 코드를보고 문제점을 알려주시겠습니까? 고맙습니다.

package com.example.attempt; 

import android.app.Activity; 
import android.content.Context; 
import android.media.AudioManager; 
import android.os.Bundle; 
import android.view.SoundEffectConstants; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends Activity implements OnClickListener { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button button=(Button) findViewById(R.id.muteButton); 
     button.setOnClickListener(this); 
    } 

     AudioManager audioManager = 
       (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); 




    public void onClick(View v) { 
     audioManager.playSoundEffect(SoundEffectConstants.CLICK); 
    } 
} 
+0

에, 에뮬레이터는 '아무튼 t를 처리하다 그는 아주 잘 AudioManager. 첫 번째 답변에서와 마찬가지로 잘못된 시간에 인스턴스를 생성합니다. logcat 게시도 도움이 될 것입니다. (매니페스트에 올바른 권한을 추가하지 않은 경우 보안 예외가있을 수 있음) – DigCamara

+0

레이아웃 (XML)도 게시해야합니다. 당신은 분명히 버튼뿐만 아니라 TextView를 사용하려고합니다 ... – DigCamara

답변

5

이 같은 AudioManager audioManager 인스턴스 onCreate 내부 방법을 초기화 :

AudioManager audioManager; //<<<< declare here... 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button button=(Button) findViewById(R.id.muteButton); 
     button.setOnClickListener(this); 

     /// initialize here 
     audioManager = 
       (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); 
    } 
+1

+1 예, 이것이 정답입니다 !! @ user83676은 인스턴스 변수로 생성되기 전에 AudioManager를 초기화하기 때문에 작동하지 않습니다. Android는 onCreate 전에 시스템 서비스를 허용하지 않습니다. –

+0

그 말이 맞지만 실행하면 여전히 많은 오류 메시지가 나타납니다. LogCat 파일에서 300+ 이상! : – user83676

+0

@ user83676 : 여전히 오류가 발생하는 경우 plz LogCat 파일을 추가하십시오. 질문이 포함되어 있습니다. –

1

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button button=(Button) findViewById(R.id.muteButton); 
    button.setOnClickListener(this); 
} 

    AudioManager audioManager = 
      (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); 

변경 그것은 내가 아는 한

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

AudioManager audioManager = 
       (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); 
     Button button=(Button) findViewById(R.id.muteButton); 
     button.setOnClickListener(this); 
    } 
+0

복사 한 내용을 복사했지만 작동하지 않았습니다.그것은 여전히 ​​충돌합니다 : ( – user83676

+0

onClick에 액세스 할 수 있도록 audioManager를 멤버 변수로 선언해야합니다.이 코드는있는 그대로 작동하지 않습니다 . – dymmeh

+0

일주일 전에 java로 코딩을 시작 했으므로 생각이 없습니다. 무슨 일이야 !! 하하. 어떻게해야합니까? – user83676

관련 문제