1

我的主要活动中有此代码

public boolean onOptionsItemSelected(MenuItem item) {

   int itemId = item.getItemId();

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

        CharSequence title = item.getTitle();
        Log.d("onOptionsItemSelected", "menu_edit title=" + title);
        if(title=="Edit") {
            // switch to RUn
            item.setTitle("Run");
        } else {
            // switch to Edit
            item.setTitle("Edit");
        }
    }

    return super.onOptionsItemSelected(item);

}

按钮是这样定义的

    android:id="@+id/menu_edit"
    android:orderInCategory="102"
    android:showAsAction="ifRoom|withText"
    android:title="Edit"/>

基本思想是“编辑”按钮切换到“运行”并在按下时返回。它有点工作,除了我第一次按下它什么都不做,然后它工作正常:注意这是操作栏上的一个项目,而不是在菜单中,所以我认为 onPrepareOptionsMenu 没有帮助,因为它在按下按钮时没有被调用在操作栏上。

有人可以建议一种方法来获得第一次点击以使 setTitle 起作用吗?

谢谢

4

2 回答 2

2

代替:

if(title=="Edit") {

和:

if(title.equals( "Edit" ) ) {

它也将在第一次工作。

于 2013-01-05T04:52:46.683 回答
0

最好使用 equalIgnoreCase 而不是 equals,因为 equalignorecase 会忽略 cps 开/关按钮的情况...

于 2013-01-05T12:32:49.840 回答