Android - onOptionsItemSelected项ID不匹配

时间:2014-11-28 04:44:27

标签: java android android-actionbar

我有这种方法来分享帖子。这是我的方法:

public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int itemId = item.getItemId();

        Log.d(itemId + "", R.id.action_settings + "");

        //noinspection SimplifiableIfStatement
        if (itemId == R.id.action_settings) {
           sharePost();
            Log.d("adsfsadf", "sadf");
        }


        return super.onOptionsItemSelected(item);
    }

问题是itemIdR.id.action_settings不匹配,因此共享未被调用我不确定为什么它们不匹配这里是我的项目的xml。

<item android:id="@+id/action_share"
    android:title="@string/action_share"
    android:icon="@drawable/ic_action_share"
    app:showAsAction="always" />

以下是此声明所记录的内容

Log.d(itemId + "", R.id.action_settings + "");
D/2131230785﹕ 2131230786

感谢您的帮助!! :)

3 个答案:

答案 0 :(得分:1)

改变,

if (itemId == R.id.action_settings)

if (itemId == R.id.action_share)

问题在于menu.xml您已将ID设置为action_share,而在java中,您正在检查action_settings

的ID匹配

我希望这有帮助!

答案 1 :(得分:1)

您的商品ID为R.id.action_share并且您正在与R.id.action_settings进行比较,它与老板的匹配程度如何?它应该是

if (itemId == R.id.action_share){

}

答案 2 :(得分:1)

尝试更改此

@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
    if(item.getItemId()==R.id.action_share)
    {
        sharePost();
        Log.d("adsfsadf", "sadf");
    }
    return super.onOptionsItemSelected(item);
}