2

我正在 android 中创建一个 Jigsaw Puzzle 应用程序。我创建了两个活动,activity_jigsaw.xml 和 activity_level.xml。默认情况下会创建一个活动(显示 Hello World!),我按照以下步骤修改并创建了一个新活动:

File -> New -> Other -> Android Activity

但是当我安装应用程序时,这两个文件(以及应用程序的所有其他活动)被安装为一个单独的项目。但同时它们也是相互关联的。文件的Java代码如下:

Jisaw.java 文件包含:

public class Jigsaw extends Activity {

    Intent intent;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_jigsaw);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_jigsaw, menu);
        return true;
    }

    public void play(View v)
    {
        try
        {
            intent = new Intent(this, Level.class);
            startActivity(intent);
        }

        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

这里的 Play 是一个在单击图像时调用的函数。

Level.java 文件包含:

public class Level extends Activity {

    Intent intent;
    String level = "";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_level);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_level, menu);
        return true;
    }

    public void easy(View v)
    {
        level = "easy";
        intent = new Intent(this, Play.class);
        intent.putExtra("level", level);
        startActivity(intent);
    }

    public void medium(View v)
    {
        level = "medium";
        intent = new Intent(this, Play.class);
        intent.putExtra("level", level);
        startActivity(intent);

    }

    public void hard(View v)
    {
        level = "hard";
        intent = new Intent(this, Play.class);
        intent.putExtra("level", level);
        startActivity(intent);

    }
}

当单击相应的图像时,将调用函数 easy、medium 和 hard。

有人可以告诉我我做错了什么吗?

提前致谢..

这是清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.maju.jigsawpuzzle"
    android:versionCode="1"
    android:versionName="1.0" >

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

    <uses-permission android:name="android.permission.SET_WALLPAPER" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".Jigsaw"
            android:label="@string/title_activity_jigsaw" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Level"
            android:label="@string/title_activity_level" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Play"
            android:label="@string/title_activity_play" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".PlayBoard"
            android:label="@string/title_activity_play_board" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>
4

1 回答 1

4

您可能正在为 AndroidManifest.xml 中的所有活动定义 android.intent.category.LAUNCHER 意图类别,它会在应用启动器中创建一个图标。除 main 之外的活动不应具有此意图过滤器。

做这样的事情:

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

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Level" />
    <activity android:name=".Play" />
    <activity android:name=".Playboard" />
</application>

编辑: 正如您刚刚发布的那样,您确实在这样做,只需从其他活动中删除意图过滤器。

于 2013-01-02T21:26:39.833 回答