UPDATE: It works on the tab, but on the phone it's overlayed for some reason
I have a question regarding the menu items android uses for the ActionBar, I have a custom background for my actiobar (a picture) and set it in the code here. That piece of code works fine. But when I try to add a menu item, it fails.
What I want is fairly simple, I want a button that says "save product as favorite" at the bottom of the screen, like the bottom-actionbar. But when I try to add the button as menu item it won't show up, nothing changes.
The log tells me the onCreateOptionsMenu() method is in fact executed. Any ideas?
This is the activity I want the menu for:
package com.x;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.LocalActivityManager;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.TextView;
import com.x.R;
import com.x.products.fragments.*;
import com.x.tasks.ZoekQueryTask;
import com.x.util.Helper;
import com.x.util.UnscaledBitmapLoader;
public class ProductActivity extends Activity {
private Bundle save;
/** Called when the activity is first created. */
@SuppressWarnings("rawtypes")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.product);
@SuppressWarnings("deprecation")
LocalActivityManager manager = new LocalActivityManager(this, false);
Helper helper = new Helper();
save = null;
String id = (String) getIntent().getExtras().get("id");
String score = (String) getIntent().getExtras().get("score");
String profileId = (String) getIntent().getExtras().get("profileId");
// String id = "138946";
// String profileId = "28";
// String score = "100%";
String query = "SELECT * FROM products WHERE id = "+id;
ArrayList<HashMap> result = null;
try {
ZoekQueryTask zoekQueryTask = new ZoekQueryTask(query);
result = zoekQueryTask.getResults();
}
catch(Exception e) {
Log.e("Afgevangen error", e.getMessage());
}
TabHost tb = (TabHost) findViewById(R.id.tabs);
manager.dispatchCreate(savedInstanceState);
tb.setup(manager);
Intent info = new Intent();
info.setClass(this, InfoFragment.class);
info.putExtra("result", result);
info.putExtra("profileId", profileId);
TabSpec tsInfo = tb.newTabSpec("info");
tsInfo.setContent(info);
tsInfo.setIndicator("info");
Intent specs = new Intent();
specs.setClass(this, SpecsFragment.class);
specs.putExtra("result", result);
TabSpec tsSpecs = tb.newTabSpec("specs");
tsSpecs.setContent(specs);
tsSpecs.setIndicator("specs");
Intent prijs = new Intent();
prijs.setClass(this, PrijsFragment.class);
prijs.putExtra("result", result);
TabSpec tsPrijs = tb.newTabSpec("Prijs");
tsPrijs.setContent(prijs);
tsPrijs.setIndicator("Prijs");
TabSpec tsFotos = tb.newTabSpec("Fotos");
tsFotos.setContent(info);
tsFotos.setIndicator("Fotos");
tb.addTab(tsInfo);
tb.addTab(tsSpecs);
tb.addTab(tsPrijs);
tb.addTab(tsFotos);
final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
Bitmap bm = UnscaledBitmapLoader.loadFromResource(getResources(), R.drawable.logo, null);
BitmapDrawable background = new BitmapDrawable(this.getResources(), bm);
background.setTileModeX(android.graphics.Shader.TileMode.CLAMP);
actionBar.setBackgroundDrawable(background);
TextView nameText = (TextView) findViewById(R.id.name);
TextView scoreText = (TextView) findViewById(R.id.score);
nameText.setText(result.get(0).get("name").toString());
scoreText.setText(score);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
Log.i("hallo", "hoi");
inflater.inflate(R.layout.product_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.save:
Log.i("menu", "werkt");
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
This is the menu XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/save"
android:title="Opslaan in favorieten" >
</item>
</menu>
I think you need to fix this:
Instead of
R.layout.product_menu
, it should refer toR.menu.your_desired_menu
If you want to show your menu item in the action bar, set the
android:showAsAction
property of your item in product_menu.xml;You can set this property to:
I hope this helps you!
Steffen