Как создать универсальное меню для приложения в Android

#android #menu

#Android #меню

Вопрос:

Я могу создать 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>
  

Ответ №1:

Просто создайте новое действие с помощью метода onOptionsSelected и расширьте это созданное действие.

 class OptionsActivity extends Activity {

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

}

class SimpleOptionsMenu extends OptionsActivity {
   ...
}
  

Комментарии:

1. Спасибо Францискусу, ваш ответ действительно ценен для меня. Есть ли какой-либо другой способ добиться этого?

2. Это единственный способ, который я знаю ^^

Ответ №2:

Если вы хотите создать одинаковое меню с одинаковыми действиями везде, вы можете создать абстрактный класс ActivityHelper, который расширяет Activity. Вы можете переопределить onCreateOptionsMenu и onOptionsItemSelected, чтобы поместить свою логику. Тогда вам просто нужно расширить BaseActivity в своих действиях.

Это должно сработать!

Приветствия,