为什么不同的活动在android中显示为单独的应用

时间:2013-01-02 21:14:18

标签: android eclipse

我在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);

    }
}

单击相应图像时,将调用简单,中等和强硬的函数。

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

提前致谢..

这是清单文件:

<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>

1 个答案:

答案 0 :(得分: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>

修改 正如您刚发布的那样,您确实这样做了,只需从其他活动中删除intent过滤器。