动作栏夏洛克动作按钮在按下时不执行任何操作



我遇到了一个问题,我一直在寻找解决方案,但找不到。我正在尝试设置一个首选项屏幕,该屏幕由ActionBarSherlock操作栏上的操作按钮打开。按钮显示在操作栏上,但按下时不会执行任何操作。他们应该开始一个新的意图,但事实并非如此。这里有一些代码:

Main.java:

package com.myname.minteract;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import android.content.Intent;
import android.os.Bundle;
public class Main extends SherlockFragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.activity_main, menu);
        menu.add("Add Server")
        .setIcon(R.drawable.ic_action_add_server)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        menu.add("Refresh Servers")
        .setIcon(R.drawable.ic_action_refresh)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        menu.add("Settings")
        .setIcon(R.drawable.ic_action_options)
        .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        return(super.onCreateOptionsMenu(menu));
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.addServer:
            startActivity(new Intent(this, AddServer.class));
            return(true);
        case R.id.settings:
            startActivity(new Intent(this, Settings.class));
            return(true);
        }
        return(super.onOptionsItemSelected(item));
    }
}

我的其他类文件和xml文件与这里的文件完全相同,只做了一些小的名称更改(发布所有代码会占用大量空间)。

希望这是足够的信息。我对Android相当陌生,对ActionBarSherlock也很陌生,所以我可能错过了一些相当容易的东西。我试过使用logcat之类的,但按钮实际上什么都没用,它甚至没有显示在logcat上并出现错误。

谢谢!

额外注意:我正在使用运行ICS的HTC Sensation 4G和运行Froyo的MyTouch 3G测试我的应用程序(以确保它与预蜂窝设备兼容)。

编辑:

这是我的/res/menu/activity_main.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_settings"
        android:title="@string/menu_settings"
        android:orderInCategory="100"
        android:showAsAction="never" />
    <item android:id="@+id/addServer"
        android:icon="@drawable/ic_action_add_server"
        android:title="Add Server" />
    <item android:id="@+id/refreshServers"
        android:icon="@drawable/ic_action_refresh"
        android:title= "Refresh Servers" />
    <item android:id="@+id/settings"
        android:icon="@drawable/ic_action_options"
        android:title="Settings" />
</menu>

您已经设置了XML文件中所有内容的ID,还设置了其他内容,因此无需在主代码中使用menu.add(...)。只要给Menu充气,一切都会好起来的。

此外,由于您已经处理了该事件,请改为返回true。试试这个:

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

就我个人而言,我建议将这些添加为res/menu/activity_main.xml中的<item ...>,而不是以编程方式添加,但如果这对您有效,那么这才是最重要的,对吧

相关内容

  • 没有找到相关文章

最新更新