2014-01-17 81 views
0

我想在这里播放声音时点击图像按钮。我试图播放声音,但它启动时崩溃了应用程序,这是我的代码。imagebutton上的声音播放单击

public class MainActivity extends Activity { 

    ImageButton imageButton; 
    Animation performAnimation1; 
    ImageView androidImageView; 
    MediaPlayer mp; 
    Button touch; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     addListenerOnButton(); 
     performAnimation1 = AnimationUtils.loadAnimation(this, R.layout.animation1); 
     performAnimation1.setRepeatCount(4); 
     androidImageView = (ImageView)findViewById(R.id.androidImageView); 
     androidImageView.startAnimation(performAnimation1); 

     mp = MediaPlayer.create(this, R.raw.click); 
     touch = (Button)this.findViewById(R.id.button1); 
     touch.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       mp.start(); 
      } 
     }); 
     } 

    public void addListenerOnButton() { 
     imageButton = (ImageButton) findViewById(R.id.button1); 
     imageButton.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

       Intent intent = new Intent(MainActivity.this, Numbers.class); 
        startActivity(intent); 
      } 
     }); 
    } 

} 

是否因为我在代码中使用onClickListener twise而崩溃?

+1

发表您的错误日志 – zanky

+0

logcat的请... –

+0

@vishesh钱德拉3月一日至17日:33:24.841:E/AndroidRuntime(1798):\t在android.app.Activity.performCreate(Activity.java:5133) 01-17 03:33:24.841:E/AndroidRuntime(1798):\t at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 01-17 03:33:24.841:E/AndroidRuntime(1798):\t在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) –

回答

0

问题:我检查你的logcat的。

Caused by: java.lang.ClassCastException: android.widget.ImageButton cannot be cast to android.widget.Button 
at com.android.learning_numbers.MainActivity.onCreate(MainActivity.java:33) 

其实,你是向下向下按钮ImageButton,这是不可能的。

touch = (Button)this.findViewById(R.id.button1); 

解决方案: 而不是做这个,请其向下转换到的ImageButton。

touch = (ImageButton)this.findViewById(R.id.button1); 

这是带有正确向下转换的代码。

公共类MainActivity扩展活动{

ImageButton imageButton; 
Animation performAnimation1; 
ImageView androidImageView; 
MediaPlayer mp; 
ImageButton touch; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    addListenerOnButton(); 
    performAnimation1 = AnimationUtils.loadAnimation(this, R.layout.animation1); 
    performAnimation1.setRepeatCount(4); 
    androidImageView = (ImageView)findViewById(R.id.androidImageView); 
    androidImageView.startAnimation(performAnimation1); 

    mp = MediaPlayer.create(this, R.raw.click); 
    touch = (ImageButton)this.findViewById(R.id.button1); 
    touch.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      mp.start(); 
     } 
    }); 
    } 

public void addListenerOnButton() { 
    imageButton = (ImageButton) findViewById(R.id.button1); 
    imageButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

      Intent intent = new Intent(MainActivity.this, Numbers.class); 
       startActivity(intent); 
     } 
    }); 
} 

} 

检查它,让我知道,如果你仍然有任何问题... !!!

+0

Thankyou @Vishesh –

+0

声音正在播放,但它不会去我的下一个活动,因为它会变成befor –

1

你需要设置R.animR.layout

performAnimation1 = AnimationUtils.loadAnimation(this, R.anim.animation1);