-1

libGDX の scene2D で何かを描画しようとしています。メイン アクティビティがあり、extends Androidapplication を使用して testgame クラスを初期化します。ここでスクリーンを定義し、スクリーン クラスでステージとアクターを作成します。

問題は、同じエラーが何度も発生することです: >

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gamepadTest.app/com.gamepadTest.app.MainActivity}: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.gamepadTest.app/com.gamepadTest.app.TestGame}; have you declared this activity in your   AndroidManifest.xml? 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
            Caused by: java.lang.ClassNotFoundException: Didn't find class     "com.gamepadTest.app.MainActivity" on path: DexPathList[[zip file     "/data/app/com.gamepadTest.app-1.apk"],nativeLibraryDirectories=[/data/app-   lib/com.gamepadTest.app-1, /system/lib]]
            at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
            at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
            

> at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at      com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

見てください:

import android.os.Bundle;
import com.badlogic.gdx.backends.android.AndroidApplication;
import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration;

public class MainActivity extends AndroidApplication {
    private TestGame testGame = new TestGame();

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();

        initialize(testGame, cfg);
    }
}

import com.badlogic.gdx.Game;

public class TestGame extends Game
{
    TestScreen testScreen;

    @Override
    public void create() {
        testScreen = new TestScreen();
        setScreen(testScreen);
    }

    @Override
    public void dispose() {
        testScreen.dispose();
    }
}

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.scenes.scene2d.Stage;

public class TestScreen implements Screen {

    private Stage stage;
    private TestActor testActor;

    public TestScreen() {
        stage = new Stage();
        Gdx.input.setInputProcessor(stage);
        testActor = new TestActor();
        stage.addActor(testActor);
    }

    public void resize(int width, int height) {
        stage.setViewport(800, 600, false);
        stage.getCamera().translate(-stage.getGutterWidth(), -stage.getGutterHeight(), 0);
    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        stage.act(delta);
        stage.draw();
    }

    @Override public void dispose() {
        stage.dispose();
    }
    @Override public void show() {}
    @Override public void hide() {}
    @Override public void pause() {}
    @Override public void resume() {}
}

import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.badlogic.gdx.scenes.scene2d.Actor;

public class TestActor extends Actor{

    private ShapeRenderer renderer;

    @Override
    public void act(float delta) {
        super.act(delta);
        renderer = new ShapeRenderer();
    }

    @Override
    public void draw (SpriteBatch batch, float parentAlpha) {
        batch.end();

        renderer.setProjectionMatrix(batch.getProjectionMatrix());
        renderer.setTransformMatrix(batch.getTransformMatrix());
        renderer.translate(getX(), getY(), 0);

        renderer.begin(ShapeRenderer.ShapeType.Point);
        renderer.rect(0, 0, 100, 100);
        renderer.end();

        batch.begin();
    }
}

アップデート:

これが私のマニフェストです:

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

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="19" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.gamepadTest.app.MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
</manifest>
4

2 に答える 2

1

asTestGame内でアクティビティを宣言する必要があります。AndroidManifest.xml<activity>

マニフェストの詳細については、http: //developer.android.com/guide/topics/manifest/manifest-intro.htmlを参照してください。

次のように表示され、<application>-tag内にある必要があります。

    <activity
        android:name="com.example.TestGame"
        android:label="@string/app_name" >
    </activity>
于 2013-12-09T13:51:06.317 に答える
0

TestGame はアクティビティではありません:

public class TestGame extends Game{

宣言する必要があるアクティビティは MainActivity です。奇妙なことに、同じ名前の別のアクティビティを作成した可能性があります。とにかく、パッケージ全体ではなくドット表記で設定してみてください。

<activity
    android:name=".TestGame"
    android:label="@string/app_name" >
</activity>

これを参照してください: 明示的なアクティビティクラスが見つかりません

于 2013-12-09T15:06:20.850 に答える