2012-12-24 7 views
0

Java를 사용하여 간단한 클릭 카운터 Android 앱을 만들고 있습니다. 나는 Java를 처음 사용합니다. 다음은 내 코드입니다. gui는 카운트 버튼 자체, 카운트 재설정 버튼 및 음소거 버튼과 같이 다른 기능을 가진 다른 버튼을 가지고 있습니다.버튼 소리 및 재설정 버튼이 작동하지 않습니다 Android java

public class wazeefa extends Activity { 

//Count Button 
TextView txtCount; 
ImageView image; 
Button btnCount; 
Button wmute; 
Button wreset; 
public static int count=0; 
SharedPreferences app_preferences; 
MediaPlayer mpButtonClick; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
// The activity is being created. 
setContentView(R.layout.wazeefa); 

//SAVE COUNT 
app_preferences = this.getSharedPreferences("myPrefscount", MODE_WORLD_READABLE); 


count = app_preferences.getInt("count", 0); 

txtCount = (TextView)findViewById(R.id.wcount); 
txtCount.setText("This app has been started " + count + " times."); 


txtCount = (TextView)findViewById(R.id.wcount); 
txtCount.setText("This app has been started " + count + " times."); 

//Button SOUND AND COUNT 
mpButtonClick = MediaPlayer.create(this, R.raw.bubble); 
//RESET Button 
wreset = (Button)findViewById(R.id.wreset); 

txtCount = (TextView)findViewById(R.id.wcount); 
txtCount.setText(String.valueOf(count)); 

btnCount = (Button)findViewById(R.id.wclick); 
btnCount.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
image = (ImageView) findViewById(R.id.imageview); 
count++; 
if (count > 50) count = 0; image.setImageResource(R.drawable.duroodimage); 
if (count > 0) image.setImageResource(R.drawable.duroodimage); 
if (count > 9) image.setImageResource(R.drawable.zikrimage); 
if (count > 39) image.setImageResource(R.drawable.duroodimage); 
txtCount.setText(String.valueOf(count)); 
} 
}); 

wreset.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
count = 0; 
image.setImageResource(R.drawable.duroodimage);; 
txtCount.setText("0"); 
} 
}); 
} 

@Override 
protected void onPause() { 
super.onPause(); 
// save count value here 

SharedPreferences.Editor editor = app_preferences.edit(); 
editor.putInt("count", count); 
editor.commit(); 
} 

//MUTE button 
public void onClick(View v) { 
// TODO Auto-generated method stub 
switch (v.getId()) { 
case R.id.wmute: 
AudioManager.setMode(AudioManager.MODE_IN_CALL); 
AudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true); 
default: 
AudioManager.setMode(AudioManager.MODE_NORMAL); 
AudioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, false); 
break; 
} 

} 

나는이 1 문제 :

내가 응용 프로그램에 돌아가서 카운트가 '5'단지 예를 들어, 리셋 버튼이 더 이상 기능으로 표시 - 그것은 아무것도, 나는 오류가 발생하지 않습니다 AVD에서 '불행히도'앱이 '중지되었습니다'라는 메시지가 표시됩니다. 그러나 카운트를 계속하고 리셋 버튼을 누르면 다시 0으로 카운트가 변경됩니다.

위의 문제에 대한 제안 사항이 있으면 놓치거나 잘못된 영역에 코드를 넣었습니까? '카운트'데이터를 저장하기 위해 코드를 편집하기 전에 버튼 사운드가 작동했습니다.

크래시 로그 ... 내가 막연한되고있어 알려줘 :

12-24 18:07:42.661: W/Trace(3633): Unexpected value from nativeGetEnabledTags: 0 
12-24 18:07:42.741: D/AndroidRuntime(3633): Shutting down VM 
12-24 18:07:42.741: W/dalvikvm(3633): threadid=1: thread exiting with uncaught  exception (group=0x40a70930) 
12-24 18:07:42.811: E/AndroidRuntime(3633): FATAL EXCEPTION: main 
12-24 18:07:42.811: E/AndroidRuntime(3633): java.lang.NullPointerException 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at com.shaadcorp.wazaifapp.wazeefa$2.onClick(wazeefa.java:81) 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at android.view.View.performClick(View.java:4202) 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at android.view.View$PerformClick.run(View.java:17340) 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at android.os.Handler.handleCallback(Handler.java:725) 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at android.os.Handler.dispatchMessage(Handler.java:92) 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at android.os.Looper.loop(Looper.java:137) 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at java.lang.reflect.Method.invoke(Method.java:511) 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
12-24 18:07:42.811: E/AndroidRuntime(3633):  at dalvik.system.NativeStart.main(Native  Method) 
12-24 18:07:48.842: I/Process(3633): Sending signal. PID: 3633 SIG: 9 
12-24 18:07:51.572: E/Trace(3808): error opening trace file: No such file or directory  (2) 
+0

오류 로그를 붙여 넣을 수 있습니까? –

+0

예, OK 로그 추가 – Mustafa

답변

1

수정 된 문제, 도움 주셔서 감사합니다.

public class wazeefa extends Activity { 

//Count Button 
TextView txtCount; 
ImageView image; 
Button btnCount; 
Button wmute; 
Button wreset; 
public static int count=0; 
SharedPreferences app_preferences; 
MediaPlayer mpButtonClick; 
AudioManager audioManager; 
public static boolean mutestatus=false; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
// The activity is being created. 
setContentView(R.layout.wazeefa); 




audioManager = 
(AudioManager)getSystemService(Context.AUDIO_SERVICE); 
//SAVE COUNT 
app_preferences = this.getSharedPreferences("myPrefscount", MODE_WORLD_READABLE); 


count = app_preferences.getInt("count", 0); 

txtCount = (TextView)findViewById(R.id.wcount); 
txtCount.setText("This app has been started " + count + " times."); 

image = (ImageView) findViewById(R.id.imageview); 

txtCount = (TextView)findViewById(R.id.wcount); 
txtCount.setText("This app has been started " + count + " times."); 

//Button SOUND AND COUNT 
mpButtonClick = MediaPlayer.create(this, R.raw.bubble); 
//RESET Button 
wreset = (Button)findViewById(R.id.wreset); 

txtCount = (TextView)findViewById(R.id.wcount); 
txtCount.setText(String.valueOf(count)); 

btnCount = (Button)findViewById(R.id.wclick); 

wmute=(Button)findViewById(R.id.wmute); 

btnCount.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 

count++; 
if (count > 50) count = 0; image.setImageResource(R.drawable.duroodimage); 
if (count > 0) image.setImageResource(R.drawable.duroodimage); 
if (count > 9) image.setImageResource(R.drawable.zikrimage); 
if (count > 39) image.setImageResource(R.drawable.duroodimage); 
txtCount.setText(String.valueOf(count)); 
mpButtonClick.start(); 
} 
}); 

wreset.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
count = 0; 
image.setImageResource(R.drawable.duroodimage);; 
txtCount.setText("0"); 
SharedPreferences.Editor editor = app_preferences.edit(); 
editor.putInt("count", count); 
editor.commit(); 
} 
}); 


wmute.setOnClickListener(new View.OnClickListener() { 
public void onClick(View v) { 
if(!mutestatus){ 
mutestatus=true; 
audioManager.setMode(AudioManager.MODE_IN_CALL); 
audioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true); 
Log.v("'test....",""+mutestatus); 
} 
else{ 
mutestatus=false; 
audioManager.setMode(AudioManager.MODE_NORMAL); 
audioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, false); 
Log.v("'test....",""+mutestatus); 
} 
}}); 
} 

@Override 
protected void onPause() { 
super.onPause(); 
// save count value here 

SharedPreferences.Editor editor = app_preferences.edit(); 
editor.putInt("count", count); 
editor.commit(); 


} 



} 
2

을 내가 어디 코드에서) mpButtonClick.start을 (보지 않았다 같아요. 그것이 사운드가 재생되지 않는 이유입니다. mpButtonClick.start()를 추가하십시오. 귀하의 ClickListener합니다.

+1

set text 전에는 findViewById()를 호출 할 필요가 없습니다. 전역 변수로 선언 했으므로 한 번만 호출하면됩니다. –

관련 문제