Menu not showing in app

17,280

Solution 1

go to your manifest file and add or change this application attribute, if not available look for something similar there are more using action bar

android:theme="@style/ThemeOverlay.AppCompat.ActionBar" >

Solution 2

    <item
    android:id="@+id/menu_item_share"
    android:showAsAction="always"
    android:title="Share"
    android:actionProviderClass= "android.widget.ShareActionProvider"
    tools:ignore="AppCompatResource" />

ifRoom means if there is room available to show. Make it always for it to be shown always.

Share:
17,280
Stefan
Author by

Stefan

Hello

Updated on June 08, 2022

Comments

  • Stefan
    Stefan almost 2 years

    For some reason my action menu dissapeared in my Android Studio app. I'm following a tutorial to learn how to create an android app but I ended up with this problem.

    Tutorial I'm using atm: http://www.raywenderlich.com/56109/make-first-android-app-part-2

    This is what my main.xml looks like:

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- Share item -->
        <item
            android:id="@+id/menu_item_share"
            android:showAsAction="ifRoom"
            android:title="Share"
            android:actionProviderClass= "android.widget.ShareActionProvider" />
    </menu>
    

    menu_main.xml:

    <!-- Defines the menu item that will appear on the Action Bar in MainActivity -->
    <menu xmlns:tools="http://schemas.android.com/tools"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- Share item -->
        <item
            android:id="@+id/menu_item_share"
            android:showAsAction="ifRoom"
            android:title="Share"
            android:actionProviderClass= "android.widget.ShareActionProvider"
            tools:ignore="AppCompatResource" />
    </menu>
    

    What did I do wrong in this code? I didn't get any errors. And I pretty much copy pasted this from the tutorial.

    I don't think its my java code but still here it is incase someone thinks the problem is in that code. MainActivity.java:

    package android.stefan.testappnieuw;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.ListView;
    import android.widget.TextView;
    
    import java.util.ArrayList;
    
    
    public class MainActivity extends Activity implements View.OnClickListener, AdapterView.OnItemClickListener {
    
        TextView mainTextView;
        Button mainButton;
        EditText mainEditText;
        ListView mainListView;
        ArrayAdapter mArrayAdapter;
        ArrayList mNameList = new ArrayList();
        android.widget.ShareActionProvider mShareActionProvider;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            // 1. Access the TextView defined in layout XML
            // and then set its text
            mainTextView = (TextView) findViewById(R.id.main_textview);
            mainTextView.setText("Set in Java!");
            // 2. Access the Button defined in layout XML
            // and listen for it here
            mainButton = (Button) findViewById(R.id.main_button);
            mainButton.setOnClickListener(this);
            // 3. Access the EditText defined in layout XML
            mainEditText = (EditText) findViewById(R.id.main_edittext);
            // 4. Access the ListView
            mainListView = (ListView) findViewById(R.id.main_listview);
            // 5. Set this activity to react to list items being pressed
            mainListView.setOnItemClickListener(this);
    
            // Create an ArrayAdapter for the ListView
            mArrayAdapter = new ArrayAdapter(this,
                    android.R.layout.simple_list_item_1,
                    mNameList);
    
            // Set the ListView to use the ArrayAdapter
            mainListView.setAdapter(mArrayAdapter);
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
    
            // Inflate the menu.
            // Adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
    
            // Access the Share Item defined in menu XML
            MenuItem shareItem = menu.findItem(R.id.menu_item_share);
    
            // Access the object responsible for
            // putting together the sharing submenu
            if (shareItem != null) {
                mShareActionProvider = (android.widget.ShareActionProvider)shareItem.getActionProvider();
            }
    
            // Create an Intent to share your content
            setShareIntent();
    
            return true;
        }
    
        private void setShareIntent() {
    
            if (mShareActionProvider != null) {
    
                // create an Intent with the contents of the TextView
                Intent shareIntent = new Intent(Intent.ACTION_SEND);
                shareIntent.setType("text/plain");
                shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Android Development");
                shareIntent.putExtra(Intent.EXTRA_TEXT, mainTextView.getText());
    
                // Make sure the provider knows
                // it should work with that Intent
                mShareActionProvider.setShareIntent(shareIntent);
            }
        }
    
        @Override
        public void onClick(View v) {
            // Take what was typed into the EditText
            // and use in TextView
            mainTextView.setText(mainEditText.getText().toString()
                    + " Hallo");
            // Also add that value to the list shown in the ListView
            mNameList.add(mainEditText.getText().toString());
            mArrayAdapter.notifyDataSetChanged();
            // 6. The text you'd like to share has changed,
            // and you need to update
            setShareIntent();
        }
    
        @Override
        public void onItemClick(AdapterView parent, View view, int position, long id) {
            // Log the item's position and contents
            // to the console in Debug
            Log.d("omg android", position + ": " + mNameList.get(position));
        }
    }
    

    I really have no idea whats wrong I'm new to java/android and for some reason the menu bar is showing up in the tutorial but not for me.

    Thanks for reading/helping!