我有这个简单的代码:
public class AndroidAlertTutorial extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PopIt("Exit Application", "Are you sure you want to exit?");
}
public void PopIt( String title, String message ){
new AlertDialog.Builder(this)
.setTitle( title )
.setMessage( message )
.setPositiveButton("YES", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of YES
finish();
}
})
.setNegativeButton("NO", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of CANCEL
Toast.makeText(getBaseContext(), "You touched CANCEL", Toast.LENGTH_SHORT).show();
}
}).show();
}
}
不幸的是,由于一个未知的原因,没有任何显示,应用程序强制关闭!我想知道我的main.xml文件或androidmanifest是否有问题,因为我无法弄清楚这段代码有什么问题。
怎么了?
由于
这是Logcat:
01-03 11:58:17.430: D/AndroidRuntime(12907): Shutting down VM
01-03 11:58:17.430: W/dalvikvm(12907): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
01-03 11:58:17.530: E/AndroidRuntime(12907): FATAL EXCEPTION: main
01-03 11:58:17.530: E/AndroidRuntime(12907): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.android.androidalert/com.android.androidalert.AndroidAlertTutorialActivity}: java.lang.ClassNotFoundException: com.android.androidalert.AndroidAlertTutorialActivity in loader dalvik.system.PathClassLoader[/data/app/com.android.androidalert-1.apk]
01-03 11:58:17.530: E/AndroidRuntime(12907): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1573)
01-03 11:58:17.530: E/AndroidRuntime(12907): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
01-03 11:58:17.530: E/AndroidRuntime(12907): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-03 11:58:17.530: E/AndroidRuntime(12907): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
01-03 11:58:17.530: E/AndroidRuntime(12907): at android.os.Handler.dispatchMessage(Handler.java:99)
01-03 11:58:17.530: E/AndroidRuntime(12907): at android.os.Looper.loop(Looper.java:123)
01-03 11:58:17.530: E/AndroidRuntime(12907): at android.app.ActivityThread.main(ActivityThread.java:3691)
01-03 11:58:17.530: E/AndroidRuntime(12907): at java.lang.reflect.Method.invokeNative(Native Method)
01-03 11:58:17.530: E/AndroidRuntime(12907): at java.lang.reflect.Method.invoke(Method.java:507)
01-03 11:58:17.530: E/AndroidRuntime(12907): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
01-03 11:58:17.530: E/AndroidRuntime(12907): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
01-03 11:58:17.530: E/AndroidRuntime(12907): at dalvik.system.NativeStart.main(Native Method)
01-03 11:58:17.530: E/AndroidRuntime(12907): Caused by: java.lang.ClassNotFoundException: com.android.androidalert.AndroidAlertTutorialActivity in loader dalvik.system.PathClassLoader[/data/app/com.android.androidalert-1.apk]
01-03 11:58:17.530: E/AndroidRuntime(12907): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
01-03 11:58:17.530: E/AndroidRuntime(12907): at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
01-03 11:58:17.530: E/AndroidRuntime(12907): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
01-03 11:58:17.530: E/AndroidRuntime(12907): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-03 11:58:17.530: E/AndroidRuntime(12907): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1565)
01-03 11:58:17.530: E/AndroidRuntime(12907): ... 11 more
01-03 11:58:47.135: I/Process(12907): Sending signal. PID: 12907 SIG: 9
清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.androidalert"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".AndroidAlertTutorialActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
答案 0 :(得分:2)
在您的清单中,您已声明了您的主要活动名称AndroidAlertTutorialActivity
,当您启动应用时,它会搜索该名称并且找不到该名称的任何类,因为您已将您的班级AndroidAlertTutorial
命名为因此抛出java.lang.ClassNotFoundException
。将清单中的名称更改为与您的类名称相同,或将您的活动类名称更改为与清单中声明的相同。
答案 1 :(得分:0)
它对我有用,我已经在2.3.3中构建了它。我认为这不是代码的问题。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PopIt("Exit Application", "Are you sure you want to exit?");
}
private void PopIt(String string, String string2) {
// TODO Auto-generated method stub
new AlertDialog.Builder(this).setTitle(string).setMessage(string2)
.setPositiveButton("YES", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
// do stuff onclick of YES
finish();
}
}).setNegativeButton("NO", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
// do stuff onclick of CANCEL
Toast.makeText(getBaseContext(), "You touched CANCEL",
Toast.LENGTH_SHORT).show();
}
}).show();
}
答案 2 :(得分:0)
试试这个
public class AndroidAlertTutorial extends Activity {
private static final int SHOW_EXIT = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
showDialog(SHOW_EXIT);
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case SHOW_EXIT:
return PopIt("Exit Application", "Are you sure you want to exit?");
default:
break;
}
return super.onCreateDialog(id);
}
public Dialog PopIt( String title, String message ){
return new AlertDialog.Builder(this)
.setTitle( title )
.setMessage( message )
.setPositiveButton("YES", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of YES
finish();
}
})
.setNegativeButton("NO", new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//do stuff onclick of CANCEL
Toast.makeText(getBaseContext(), "You touched CANCEL", Toast.LENGTH_SHORT).show();
}
}).create();
}
}