Контекстное меню в расширенном представлении LinearLayout - PullRequest
1 голос
/ 31 августа 2011

У меня есть класс (представление), который расширяет LinearLayout.

Теперь я пытаюсь создать контекстное меню для каждого элемента этого класса в моей деятельности, но нет никакого способа, он никогдаfires:

 public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    LinearLayout ll = new LinearLayout(this);
    MyLinearLayout[] arrayLayout = new MyLinearLayout[num];
    for (int i = 0; i < arrayLayout.length; i++)
    {
       //I ve removed code that fill the array and do some actions


       //and then:
       ll.addView(arrayLayout[i]);
       registerForContextMenu(arrayLayout[i]);
    }
    setContentView(ll);
}

@Override
 public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    Log.i(LOGTAG, "context menu");
        menu.setHeaderTitle("Context Menu");
        menu.add(0, v.getId(), 0, R.string.CTX_EDIT);
        menu.add(0, v.getId(), 0, R.string.CTX_ELIM);
    }
@Override
public boolean onContextItemSelected(MenuItem item) {
    function1(item.getItemId());

return true;
}

public void function1(int id){
    Toast.makeText(this, "function 1 called", Toast.LENGTH_SHORT).show();
}

Контекстное меню никогда не отображается, я прочитал много проблем об этом, и я думаю, что это из-за расширенного класса LinearLayout, но я уверен, что есть способ сделатьэто или я что-то упустил.Может кто-нибудь помочь, пожалуйста?спасибо!

1 Ответ

2 голосов
/ 31 августа 2011

Вы создаете пустой массив MyLinearLayout: arrayLayout = new MyLinearLayout[num],

Затем вы пытаетесь установить контекстное меню с помощью:

registerForContextMenu(arrayLayout[i])

, который ничего не делает, поскольку arrayLayout[i]null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...