Java 应用程序可以';不要在安卓2.3上启动
我的应用程序不想在安卓2.3上启动,尽管我的最低版本是2.2,这里是日志。我在emulator和2.3 Android设备上进行了测试,它根本不运行,但在我的另一台4.0设备上运行很好。。。有什么不对劲吗Java 应用程序可以';不要在安卓2.3上启动,java,android,logcat,Java,Android,Logcat,我的应用程序不想在安卓2.3上启动,尽管我的最低版本是2.2,这里是日志。我在emulator和2.3 Android设备上进行了测试,它根本不运行,但在我的另一台4.0设备上运行很好。。。有什么不对劲吗 04-16 13:18:40.982: D/dalvikvm(6191): GC_CONCURRENT freed 41K, 49% free 2761K/5379K, external 3443K/4300K, paused 3ms+42ms 04-16 13:18:41.652: D/da
04-16 13:18:40.982: D/dalvikvm(6191): GC_CONCURRENT freed 41K, 49% free 2761K/5379K, external 3443K/4300K, paused 3ms+42ms
04-16 13:18:41.652: D/dalvikvm(6191): GC_CONCURRENT freed 1K, 49% free 2761K/5379K, external 4643K/4643K, paused 2ms+10ms
04-16 13:18:41.942: D/AndroidRuntime(6191): Shutting down VM
04-16 13:18:41.942: W/dalvikvm(6191): threadid=1: thread exiting with uncaught exception (group=0x2aac8578)
04-16 13:18:41.952: E/AndroidRuntime(6191): FATAL EXCEPTION: main
04-16 13:18:41.952: E/AndroidRuntime(6191): java.lang.RuntimeException: Unable to resume activity {spec.sartheris.myapp/spec.sartheris.myapp.MainActivity}: java.lang.NullPointerException
04-16 13:18:41.952: E/AndroidRuntime(6191): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2141)
04-16 13:18:41.952: E/AndroidRuntime(6191): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2156)
04-16 13:18:41.952: E/AndroidRuntime(6191): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1680)
04-16 13:18:41.952: E/AndroidRuntime(6191): at android.app.ActivityThread.access$1500(ActivityThread.java:121)
04-16 13:18:41.952: E/AndroidRuntime(6191): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943)
04-16 13:18:41.952: E/AndroidRuntime(6191): at android.os.Handler.dispatchMessage(Handler.java:99)
04-16 13:18:41.952: E/AndroidRuntime(6191): at android.os.Looper.loop(Looper.java:130)
04-16 13:18:41.952: E/AndroidRuntime(6191): at android.app.ActivityThread.main(ActivityThread.java:3701)
04-16 13:18:41.952: E/AndroidRuntime(6191): at java.lang.reflect.Method.invokeNative(Native Method)
04-16 13:18:41.952: E/AndroidRuntime(6191): at java.lang.reflect.Method.invoke(Method.java:507)
04-16 13:18:41.952: E/AndroidRuntime(6191): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
04-16 13:18:41.952: E/AndroidRuntime(6191): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
04-16 13:18:41.952: E/AndroidRuntime(6191): at dalvik.system.NativeStart.main(Native Method)
04-16 13:18:41.952: E/AndroidRuntime(6191): Caused by: java.lang.NullPointerException
04-16 13:18:41.952: E/AndroidRuntime(6191): at spec.sartheris.myapp.MainActivity.onResume(MainActivity.java:47)
04-16 13:18:41.952: E/AndroidRuntime(6191): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
04-16 13:18:41.952: E/AndroidRuntime(6191): at android.app.Activity.performResume(Activity.java:3832)
04-16 13:18:41.952: E/AndroidRuntime(6191): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2131)
04-16 13:18:41.952: E/AndroidRuntime(6191): ... 12 more
04-16 13:18:42.002: D/dalvikvm(6191): GC_CONCURRENT freed 54K, 49% free 2775K/5379K, external 2543K/5243K, paused 2ms+13ms
以下是MainActivity中的代码
public class MainActivity extends Activity {
MediaPlayer music;
int length;
ImageView img;
AnimationDrawable animation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
music = MediaPlayer.create(getApplicationContext(), R.raw.mymusic);
music.setLooping(true);
music.start();
img = (ImageView) findViewById(R.id.imageView1);
img.setBackgroundResource(R.drawable.myanim);
animation = (AnimationDrawable) img.getDrawable();
animation.start();
}
@Override
protected void onPause() {
super.onPause();
music.pause();
length = music.getCurrentPosition();
}
@Override
protected void onResume() {
super.onResume();
music.seekTo(length);
music.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.options, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about:
Intent ia = new Intent("spec.sartheris.myapp.ABOUTUS");
startActivity(ia);
break;
case R.id.exit:
finish();
break;
}
return false;
}
}
音乐
未初始化。在onCreate()
中初始化它,因为onResume()
在onCreate()
之后运行onResume()
将此行移动到onCreate()
下:
或者,您可以将其添加到onCreate()
中:
MediaPlayer music = new MediaPlayer();
然后在onWindowFocusChanged()
中按以下方式添加音乐文件:
music.setDataSource("PathToFile");
出于某种原因,.aac文件没有在姜饼上播放,这就是发生错误的原因,将其替换为正常的.mp3文件,现在可以正常工作了,奇怪…您的错误在这里检查MainActivity.java:spec.sartheris.myapp.MainActivity.onResume(MainActivity.java:47)中的第47行将MainActivity代码放在这里……MainActivity.java的第47行有一个NullPointerException。请检查变量长度是否也未初始化,因为android活动生命周期为:onCreate()->onStart()->onResume()。您使用的是length变量,在本例中为null。在您的代码中,您应该将length初始化为0或类似的值。不,同样的事情,int length=0,没有什么不同的情况。我如何初始化它,MediaPlay没有这样的方法您已经在onWindowFocusChanged()中初始化了它。因此,只需将代码移到onCreate()@SartherisStormhammer即可通过调用其构造函数或返回类实例的方法初始化变量(如在onWindowFocusChanged()中所做的操作:music=MediaPlayer.create(getApplicationContext(),R.raw.mymusic);必须在使用变量的方法之前初始化该变量(就像你在onResume()中所做的一样,仍然没有什么,甚至在onCreate之前就初始化了MediaPlayer,在它的onResume中,在LogCat中,它说“无法创建媒体播放器”
music.setDataSource("PathToFile");