Используйте onOptionsItemSelected с кнопкой в ​​макете

Я пытаюсь персонализировать учебник Android об изменениях макета ( http://developer.android.com/training/animation/layout.html), но в коде есть этот код

public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case android.R.id.home:
        // Navigate "up" the demo structure to the launchpad activity.
        // See http://developer.android.com/design/patterns/navigation.html
        // for more.
        NavUtils.navigateUpTo(this, new Intent(this, MainActivity.class));
        return true;

    case R.id.action_add_item:
        // Hide the "empty" view since there is now at least one item in the
        // list.
        findViewById(android.R.id.empty).setVisibility(View.GONE);
        addItem();
        return true;
    }

    return super.onOptionsItemSelected(item);
}

В моем случае у меня нет кнопки в меню, но я бы использовал внешнюю кнопку. Я пытаюсь использовать эту кнопку:

<Button
            android:id="@+id/buttonPost"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="30dp"
            android:layout_toRightOf="@+id/editTextComment"
            android:text="Post"
            android:onClick="add" />

С помощью метода

    public void add(View view) {
    findViewById(android.R.id.empty).setVisibility(View.GONE);
    addItem();

}

Но это решение не работает. Есть идеи?

2 ответа

Решение

onOptionsItemSelected для вариантов menu используется с onCreateOptionsMenu(Menu menu), Просто переместите этот код на свой onClick если вы хотите, чтобы это работало на Buttonс и switch на Buttonid,

public void add(View v) {

   switch (v.getId()) {
   case R.id.buttonPost:
        findViewById(android.R.id.empty).setVisibility(View.GONE);
        addItem();
        break;
    case R.id.another_button_id:
        // do something else
        break;
    }

}

Положить OnClickListener вместо этого на вашей кнопке:

findViewById(R.id.buttonPost).setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // do something here
    }
});
Другие вопросы по тегам