Используйте 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
на Button
id
,
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
}
});