2

私はアンドロイドでジグソーパズルアプリケーションを作成しています。2つのアクティビティ、activity_jigsaw.xmlとactivity_level.xmlを作成しました。デフォルトで1つのアクティビティが作成され(Hello World!を表示)、次の手順に従って変更し、新しいアクティビティを作成しました。

File -> New -> Other -> Android Activity

しかし、アプリケーションをインストールすると、これら2つのファイル(およびアプリケーションの他のすべてのアクティビティ)が別個のプロジェクトとしてインストールされます。しかし同時に、それらは相互に関連しています。次のようなファイルの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>
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 に答える