如何在android中为应用程序创建通用菜单

时间:2011-05-20 10:41:00

标签: android menu

我可以创建一个OptionMenu,请参阅下面的代码。但在我的程序中,问题是我必须在每个活动中编写逻辑。

如果我有一个包含10个活动的应用程序。我必须在任何地方编写菜单代码。

我想为整个应用程序创建一个单一菜单。无论我在哪里。如果我单击硬件菜单键,那么我必须能够进入菜单。如何创建此类通用菜单?

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class SimpleOptionMenu extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.animation_test);
    }

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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.icon:
            Toast.makeText(this, "You pressed the icon!", Toast.LENGTH_LONG)
                    .show();
            break;
        case R.id.text:
            Toast.makeText(this, "You pressed the text!", Toast.LENGTH_LONG)
                    .show();
            break;
        case R.id.icontext:
            Toast.makeText(this, "You pressed the icon and text!",
                    Toast.LENGTH_LONG).show();
            break;
        }
        return true;
    }

}

animation_test.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button  
        android:id="@+id/btn_ani"
        android:layout_alignParentTop="true"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Click to start animation"/>

</RelativeLayout>

2 个答案:

答案 0 :(得分:3)

只需使用onOptionsSelected方法创建一个新的Activity,并扩展此创建的Activity。

class OptionsActivity extends Activity {

    public boolean onOptionsItemSelected(MenuItem item) {
       ...
    }

}

class SimpleOptionsMenu extends OptionsActivity {
   ...
}

答案 1 :(得分:1)

如果要在任何地方使用相同的操作创建相同的菜单,可以创建一个扩展Activity的抽象类ActivityHelper。 您可以覆盖onCreateOptionsMenu和onOptionsItemSelected来放置您的逻辑。 然后,您只需在活动中扩展BaseActivity。

这应该可以做到!

干杯,