在android中动态更改上下文菜单项

时间:2016-06-28 12:26:53

标签: android contextmenu

我正在尝试实现联系人应用程序。这是来源:

call = (Button) findViewById(R.id.button3);
    message = (Button) findViewById(R.id.button4);
    call.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    registerForContextMenu(call);
                    openContextMenu(call);
                }
            });
    message.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            registerForContextMenu(message);
            openContextMenu(message);
        }
    });

现在,这是上下文菜单部分:

 public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo)
{
    super.onCreateContextMenu(menu,v,menuInfo);
    String num1 = ((TextView)findViewById(R.id.num1)).getText().toString();
    String num2 = ((TextView)findViewById(R.id.num2)).getText().toString();
    if(v == call)
    {
        menu.setHeaderTitle("Call");
        menu.add(0,v.getId(),0,num1);
        if(num2 != "")
        {
            menu.add(0,v.getId(),0,num2);
        }
    }
    else if(v == message)
    {
        menu.setHeaderTitle("Message");
        menu.add(0,v.getId(),0,num1);
        if(num2 != "")
        {
            menu.add(0,v.getId(),0,num2);
        }
    }
}

主要功能是,如果用户只有一个联系人号码,则上下文菜单中只应显示一个号码。但是,这就是问题所在:

The Problem

如果没有第二个联系人,则显示空格。而且,它是可点击的!

我的LOGIC:我使用TextView显示存储在数据库中的数字。我使用String来存储TextView的数据。如果第二个数字的字符串不为空,则将该项添加到上下文菜单中。

请帮帮我! 提前谢谢。

2 个答案:

答案 0 :(得分:0)

在java中你应该使用

!num2.isEmpty()

而不是

num2 != ""

字符串比较就像

一样
string1.equals(string2) ; //to match 2 strings
string.isEmpty() //to check if string is empty

在java。

阅读this了解详情。

答案 1 :(得分:0)

最好的是......

  if(num2.trim().lenght()>0)
    {
        menu.add(0,v.getId(),0,num2);
    }