My android application targets the latest platform. I am new to the platform, and read bit conflicting information on actionbar. The way I was using it for navigation was.
menu.xml
<menu>
<item android:id="@+id/action_sort_size"
android:icon="@android:drawable/ic_menu_sort_by_size"
android:title="@string/action_barabc"
android:onClick="abc" />
<item android:id="@+id/action_sort_alpha"
....
In my activity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void abc(MenuItem item) {
//...
}
this works, but the back/up navigation is not working correctly. could be unrelated, still like to confirm.
But, I also see implementation like here
where it switches on item.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menuitem1:
Toast.makeText(this, "Menu Item 1 selected", Toast.LENGTH_SHORT)
.show();
break;
case R.id.menuitem2:
....
}
Which is the better approach?
The better approach, in my opinion, is the switch approach. There aren’t many reasons why, but I’ll list them:
If you really wanted to have a centralized method using xml, you would have
onClickreference the same method and check the ids of theViewparameter. Which is essentially the same asonOptionsItemSelected.It’s largely personal, but if it looks like it’s a convention, and everyone uses it, I’d adhere to it. Especially if you’re working as part of a team. Different coding styles for such arbritrary things should be avoided.
And concerning your back/up navigation, it shouldn’t make a difference which way you do it, since you have to implement the same code to get that navigation type.