0

私はJavaとAndroidの開発に不慣れです。勉強専用のシンプルなアプリを作っています。メニューボタンの機能などを作成する方法を学びましたが、すべてのクラスファイルにこのコードを記述するのはかなり奇妙です。

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case 1:
            try {
                Class activityClass1 = Class.forName("com.epicandroidapp.MenuActivity");
                Intent activityIntent1 = new Intent(MainActivity.this, activityClass1);
                startActivity(activityIntent1);
                return true;
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        case 2:
            return true;
        case 3:
            try {
                Class activityClass2 = Class.forName("com.epicandroidapp.AboutActivity");
                Intent activityIntent2 = new Intent(MainActivity.this, activityClass2);
                startActivity(activityIntent2);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            return true;
        case 4:
            try {
                Class activityClass3 = Class.forName("com.epicandroidapp.VersionActivity");
                Intent activityIntent3 = new Intent(MainActivity.this, activityClass3);
                startActivity(activityIntent3);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            return true;
    }
    return super.onOptionsItemSelected(item);
}

チュートリアルなどが見つかりません。それで、コンストラクターか何かのような外部ファイルでそれは可能ですか?

答えてくれてありがとうマクシミリアン・クリコフ

4

1 に答える 1

0

switch ステートメントの各ケースに対して、このはるかに小さなコードを使用できます。

startActivity(new Intent(MainActivity.this, com.epicandroidapp.MenuActivity.class));

または、クラスをインポートする場合:

import com.epicandroidapp.MenuActivity;

startActivity(new Intent(MainActivity.this, MenuActivity.class));

編集:コード全体を意味する場合は、このチュートリアルで説明されているように、XML リソースを使用する必要があります: http://developer.android.com/guide/topics/ui/menus.html

たとえば、メニューを含む xml ファイルを作成します (res/menu/filename.xml に保存します)。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/item1"
          android:icon="@drawable/item1"
          android:title="@string/item1"/>
</menu>

そして、あなたの中でonCreateOptionsMenu

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

onOptionsItemSelectedメソッドでは、次getItemIdのように、選択されたメニュー項目の ID を取得するために使用します。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.item1:
            startActivity(new Intent(MainActivity.this, MenuActivity.class));
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

このコード例はすべて、メニューに関する Android チュートリアルからのものです。

于 2013-01-06T15:44:36.920 に答える