#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 в своих действиях.
Это должно сработать!
Приветствия,