Android:java.lang.ClassNotFoundException

Android:java.lang.ClassNotFoundException,android,eclipse,classnotfoundexception,Android,Eclipse,Classnotfoundexception,我对android编程相当陌生,我正在从我购买的一本书中学习一个例子,但他们向我展示的示例应用程序中出现了一些bug。到目前为止,它非常简单,但到目前为止,我得到了以下错误: 07-30 04:36:59.265: W/System.err(540): java.lang.ClassNotFoundException: com.sanbox.basicsstarter.LifeCycleTest 07-30 04:36:59.285: W/System.err(540): at java.la

我对android编程相当陌生,我正在从我购买的一本书中学习一个例子,但他们向我展示的示例应用程序中出现了一些bug。到目前为止,它非常简单,但到目前为止,我得到了以下错误:

07-30 04:36:59.265: W/System.err(540): java.lang.ClassNotFoundException: com.sanbox.basicsstarter.LifeCycleTest
07-30 04:36:59.285: W/System.err(540):  at java.lang.Class.classForName(Native Method)
07-30 04:36:59.285: W/System.err(540):  at java.lang.Class.forName(Class.java:217)
我的代码实际上在3个独立的文件上第一个是调用AndroidBasicStarterActivity的主要活动:

package com.sandbox.basicsstarter;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.util.Log;

public class AndroidBasicsStarterActivity extends ListActivity {
String tests[] = { "LifeCycleTest", "SingleTouchTest", "MultiTouchTest",
"KeyTest", "AccelerometerTest", "AssetsTest",
"ExternalStorageTest", "SoundPoolTest", "MediaPlayerTest",
"FullScreenTest", "RenderViewTest", "ShapeTest", "BitmapTest",
"FontTest", "SurfaceViewTest" };
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setListAdapter(new ArrayAdapter<String>(this,
    android.R.layout.simple_list_item_1, tests));
}

private void log(String text) {
    Log.d("LifeCycleTest ", text);
}

@Override
protected void onListItemClick(ListView list, View view, int position,
    long id) {
        super.onListItemClick(list, view, position, id);
        String testName = tests[position];
        log(testName);
    try {
        Class clazz = Class.forName("com.sanbox.basicsstarter." + testName);

        Intent intent = new Intent(this, clazz);
        startActivity(intent);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}
}
最后是清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sandbox.basicsstarter"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".AndroidBasicsStarterActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:label="Life Cycle Test"
        android:name=".LifeCycleTest"
        android:configChanges="keyboard|keyboardHidden|orientation" />
</application>

</manifest>


有人能帮我找出我的错误在哪里吗?我已经尝试过清理这个项目,但没有解决任何问题。非常感谢您提出的任何可能的想法

执行以下操作以启动活动:

Intent intent = new Intent(this, LifeCycleTest.class);
不需要使用
class.forName

编辑

它找不到类的原因是因为您将包拼错了


它应该是
com.sandbox.basicsstarter
。您在沙盒中省略了
d

你开始
活动的方式
在我看来有点奇怪,但是如果你坚持这样做,为什么不使用
类[]测试

Intent intent = new Intent(AndroidBasicsStarterActivity .this, LifeCycleTest.class);
startActivity(intent);

如果坚持通过class.forName方法检索类,请尝试以下操作:

Class clazz=Class.forName(this.getPackageName()+”+testName);
意向意向=新意向(此,clazz);

确保所有的类都在正确的包中。我剪切、复制并粘贴了现有的类,这对我很有效。等等,我把minSDK改成了8级,并删除了清单中引用的LifeCycleTest中的空格。您指的是哪些空格?我刚将minSDK等级改为8级,但该应用程序仍然不适合我!啊,不公平!首先,一旦listview中的多个项目导致不同的活动,我就必须使用开关或其他东西,对吗?其次,我仍然想了解是什么导致了问题,以及为什么我购买的一本书中的代码不起作用。谢谢你的回复,我会马上测试。看看我更新的答案。它不起作用,因为程序包拼错了。啊,非常感谢,我希望我的第一篇文章不是一个愚蠢的问题,但它是。抢手货Class.forName需要具有完整包名的参数,如文档所示。我刚刚试过了,但仍然会犯同样的错误。所以这肯定意味着我的应用程序不理解LifeCycleTest有问题,我想是吗?
Intent intent = new Intent(AndroidBasicsStarterActivity .this, LifeCycleTest.class);
startActivity(intent);