Java 应用程序保持强制关闭?
可能重复: 最近我尝试添加一个闪屏,我想我把事情搞砸了,因为我的应用程序总是强制关闭 DragonFutureActivity.java:Java 应用程序保持强制关闭?,java,android,eclipse,Java,Android,Eclipse,可能重复: 最近我尝试添加一个闪屏,我想我把事情搞砸了,因为我的应用程序总是强制关闭 DragonFutureActivity.java: package com.Dragon_Fruit; import android.app.Activity; import android.content.Intent; import android.media.MediaPlayer; import android.os.Bundle; import andr
package com.Dragon_Fruit;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
public class DragonFruitActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.splash);
}
@Override
public void onStart() {
Thread logoTimer = new Thread() {
public void run() {
try {
sleep(5000);
DragonFruitActivity.this.setContentView(R.layout.main);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
finish();
}
}
};
logoTimer.start();
// ***BUTTON SOUND***//
final MediaPlayer buttonSound = MediaPlayer.create(
DragonFruitActivity.this, R.raw.button_click);
ImageButton playbutton = (ImageButton) findViewById(R.id.playbutton);
playbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
arg0.setBackgroundResource(R.drawable.playbuttonselected);
// TODO Auto-generated method stub
buttonSound.start();
startActivity(new Intent(DragonFruitActivity.this,
playbutton.class));
}
});
ImageButton settingsbutton = (ImageButton) findViewById(R.id.settingsbutton);
settingsbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
buttonSound.start();
startActivity(new Intent(DragonFruitActivity.this,
settingsbutton.class));
}
});
}
}
舱单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.Dragon_Fruit"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="preferExternal">
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true">
<activity android:name=".DragonFruitActivity"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".playbutton"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation">
<intent-filter>
<action android:name="com.Dragon_Fruit.PLAYBUTTON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".settingsbutton"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation">
<intent-filter>
<action android:name="com.Dragon_Fruit.SETTINGSBUTTON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="9" />
</manifest>
LogCat强制关闭:
08-06 23:27:56.259:错误/dalvikvm10851:无法为pid 10851禁用核心文件生成,错误号=1
08-06 23:27:56.588:错误/5531:此文件不是ASF文件。
08-06 23:27:56.689:错误/AndroidRuntime10851:致命异常:主
08-06 23:27:56.689:错误/AndroidRuntime10851:java.lang.RuntimeException:无法启动活动组件信息{com.Dragon_-Fruit/com.Dragon_-Fruit.dragonFruit活动}:java.lang.NullPointerException
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at android.app.ActivityThread.performLaunchActivityActivityThread.java:2737
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at android.app.ActivityThread.handleLaunchActivityActivityThread.java:2753
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at android.app.ActivityThread.access$2500ActivityThread.java:129
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at android.app.ActivityThread$H.handleMessageActivityThread.java:2107
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at android.os.Handler.dispatchMessageHandler.java:99
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at android.os.Looper.loopLooper.java:143
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at android.app.ActivityThread.mainActivityThread.java:4701
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at java.lang.reflect.Method.invokenactive方法
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at java.lang.reflect.Method.invokeMethod.java:521
08-06 23:27:56.689:ERROR/AndroidRuntime10851:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:868
08-06 23:27:56.689:ERROR/AndroidRuntime10851:com.android.internal.os.ZygoteInit.mainZygoteInit.java:626
08-06 23:27:56.689:错误/AndroidRuntime10851:在dalvik.system.NativeStart.main本地方法
08-06 23:27:56.689:错误/AndroidRuntime10851:原因:java.lang.NullPointerException
08-06 23:27:56.689:ERROR/AndroidRuntime10851:com.Dragon_-Fruit.DragonFruitActivity.onStartDragonFruitActivity.java:48
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at android.app.Instrumentation.callActivityOnStartInstrumentation.java:1129
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at android.app.Activity.performStartActivity.java:3781
08-06 23:27:56.689:ERROR/AndroidRuntime10851:at android.app.ActivityThread.PerformLaunchActivityYaActivityThread.java:2710
08-06 23:27:56.689:错误/AndroidRuntime10851:。。。11更多很难说这是否是导致异常的真正原因,但您绝对不能从线程调用setContentView。所有UI操作都必须从主UI线程完成
可以使用处理程序及其postDelayed方法在指定超时后更改视图。处理程序类是有文档记录的。logcat显示的错误是android系统在splash布局中找不到您的playbutton 看起来您正在尝试在AndroidManifest.xml中定义按钮。您应该在布局中定义它们,如下所述: 如果playbutton和settingsbutton是实际活动,我建议将它们资本化以匹配java约定。 您应该删除:
<activity android:name=".playbutton"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation">
<intent-filter>
<action android:name="com.Dragon_Fruit.PLAYBUTTON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".settingsbutton"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation">
<intent-filter>
<action android:name="com.Dragon_Fruit.SETTINGSBUTTON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
输入计时器代码,使其位于activity.this.setContentViewR.layout.main之后
最后,您的最后一个问题是不应该修改工作线程上的UI。有关更多信息和解决方案,请参阅本文:
对不起??我仍然需要帮助。我不允许在论坛上寻求帮助吗?对不起,我不想听起来粗鲁,我也不想违反规则,但是如果我找不到问题的答案,为什么我不能发布一些我仍然有问题的东西呢?在得到答案后,你可以做一段时间,而不是发布每次跑步的结果编译?不管你的船怎么漂,先生。沉没的不是我的船。
ImageButton playbutton = (ImageButton) findViewById(R.id.playbutton);
playbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
arg0.setBackgroundResource(R.drawable.playbuttonselected);
// TODO Auto-generated method stub
buttonSound.start();
startActivity(new Intent(DragonFruitActivity.this,
playbutton.class));
}
});
ImageButton settingsbutton = (ImageButton) findViewById(R.id.settingsbutton);
settingsbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
buttonSound.start();
startActivity(new Intent(DragonFruitActivity.this,
settingsbutton.class));
}
});