将android:onClick设置为XML格式的菜单项-方法的放置位置?
所以我在res/menu/menu_item.xml中有一个菜单,上面设置了两个项目。我想将onClick方法添加到菜单项中,但该方法放在哪里?我在3个不同的活动上设置了menu_项,但我需要一个通用方法,该方法由menu_item.xml文件中的onClick方法调用 res/menu/menu_item.xml代码:将android:onClick设置为XML格式的菜单项-方法的放置位置?,android,xml,Android,Xml,所以我在res/menu/menu_item.xml中有一个菜单,上面设置了两个项目。我想将onClick方法添加到菜单项中,但该方法放在哪里?我在3个不同的活动上设置了menu_项,但我需要一个通用方法,该方法由menu_item.xml文件中的onClick方法调用 res/menu/menu_item.xml代码: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.andr
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="Household"
app:showAsAction="never"
android:onClick="myHousehold"/>
<item
android:id="@+id/profile"
android:orderInCategory="100"
android:title="About"
app:showAsAction="never"
android:onClick="aboutApp"/>
</menu>
实际上,您不需要单击
onClick
,应该添加这样的方法来进入菜单项活动:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.action_settings:
{
// Here you can set your intent and start the activity
Intent intent1 = new Intent(this, myActivity.class);
this.startActivityForResult(intent1, MY_ACTIVITY_REQUEST);
return super.onOptionsItemSelected(item);
}
case R.id.profile:
{
// Here you can set your intent and start the activity
return super.onOptionsItemSelected(item);
}
default:
return super.onOptionsItemSelected(item);
}
}
您必须重写
活动
类中的onOptionsItemSelected
方法,检查selected
项,并根据需要执行操作
试试这个:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_action_settings: {
// Do something
return true;
}
case R.id.profile: {
// Do something
return true;
}
}
return super.onOptionsItemSelected(item);
}
//Utils.java
public class Utils{
Context mContext;
// constructor
public Utils(Context context){
this.mContext = context;
}
public String getUserName(){
return "test";
}
public void doSomething(){
// Do something
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_action_settings: {
Utils utils = new Utils(getApplicationContext());
String username = utils.getUserName();
return true;
}
case R.id.profile: {
// Do something
Utils utils = new Utils(getApplicationContext());
utils.doSomething();
return true;
}
}
return super.onOptionsItemSelected(item);
}
创建一个通用类,如下所示:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_action_settings: {
// Do something
return true;
}
case R.id.profile: {
// Do something
return true;
}
}
return super.onOptionsItemSelected(item);
}
//Utils.java
public class Utils{
Context mContext;
// constructor
public Utils(Context context){
this.mContext = context;
}
public String getUserName(){
return "test";
}
public void doSomething(){
// Do something
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_action_settings: {
Utils utils = new Utils(getApplicationContext());
String username = utils.getUserName();
return true;
}
case R.id.profile: {
// Do something
Utils utils = new Utils(getApplicationContext());
utils.doSomething();
return true;
}
}
return super.onOptionsItemSelected(item);
}
在所有活动中使用它:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_action_settings: {
// Do something
return true;
}
case R.id.profile: {
// Do something
return true;
}
}
return super.onOptionsItemSelected(item);
}
//Utils.java
public class Utils{
Context mContext;
// constructor
public Utils(Context context){
this.mContext = context;
}
public String getUserName(){
return "test";
}
public void doSomething(){
// Do something
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_action_settings: {
Utils utils = new Utils(getApplicationContext());
String username = utils.getUserName();
return true;
}
case R.id.profile: {
// Do something
Utils utils = new Utils(getApplicationContext());
utils.doSomething();
return true;
}
}
return super.onOptionsItemSelected(item);
}
希望这会有所帮助~因此需要将此方法添加到包含选项菜单的每个活动中?是的,您必须从具有选项菜单的每个活动中覆盖它。好的。我想知道是否有一种方法可以创建一个作用于所有方法的方法,因此我使用的是onClick方法。因为所有活动都使用相同的菜单文件,所以它将是一个通用方法。您必须覆盖从所有活动中选择的OnOptions Item。但您可以为项目单击操作创建通用方法。就像用户单击profile选项一样,您可以为它创建一个通用方法,并在所有活动中使用它。