I am creating a very simple action bar. I have just added 2 items in the menu but still it does not work for Android 4.1. It does work on nexus 5 emulator though.
menu_main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
<item
android:id="#+id/action_settings"
android:title="#string/action_settings"
app:showAsAction="never"/>
<item
android:id="#+id/action_exit"
android:title="Exit"
app:showAsAction="never"/>
</menu>
MainActivity.java
package com.mycompany.actionbaractivitypractise;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Any comments or suggestions will be helpful. Thank you
Your java code is correct but in menu_menu.xml instead of app: use android it will work :
Example:
<item
android:id="#+id/action_settings"
android:title="#string/action_settings"
android:showAsAction="never"/>
<item
android:id="#+id/action_exit"
android:title="Exit"
android:showAsAction="never"/>
Related
I am trying to use custom menu in my android app. I want to add some menu items.
For the purpose, I add following in my menu_main.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:title="#string/action_settings"
app:showAsAction="always" />
<item
android:id="#+id/contact"
android:icon="#drawable/ic_star"
android:orderInCategory="2000"
android:title="#string/Rate"
app:showAsAction="always" />
</menu>
And in MainActivity:
#Override
public boolean onCreateOptionsMenu(Menu menu)
{
menu.clear();
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return super.onPrepareOptionsMenu(menu);
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings)
{
Toast.makeText(this,"Hello from settings",Toast.LENGTH_LONG).show();
return true;
}
if ( id == R.id.contact)
{
startActivity(new Intent(this,ContactUs.class));
return true;
}
return super.onOptionsItemSelected(item);
}
But, it is not working at all.
I tried some solutions on SO, but none of them worked.
e.g. this
Please help me to solve this.
You have to set your toolbar like
setActionBar(toolbar);
in onCreate()
I am trying to add DPAD navigation support for my app. However, I found it is not possible to move the focus to the action menu items on Android 5. But it works fine on Android 4.4.4, see attached screenshot below, the robot icon is focused and highlighted.
Same code does not work on Android 5.1.1 Nexus7. Does anyone have any idea?
Attached my code and xmls.
MainActivity.java:
package com.example.zzztest;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Menu XML:
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:title="#string/action_settings"
app:showAsAction="never"/>
<item
android:id="#+id/action_asdf"
android:icon="#drawable/ic_launcher"
android:title="#string/action_settings"
app:showAsAction="always"/>
</menu>
Layout XML:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/hello_world" />
</RelativeLayout>
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:title="#string/action_settings"
app:showAsAction="always"/>
I used app:showAsAction="always".
Press Dpad "Menu" Button and it can be selected.
I just created an app including the new Android toolbar. My problem is: How would I hide this overflow menu icon/button: http://prntscr.com/62mmus ?
I already tried this, but it's not working:
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
mToolbar.hideOverflowMenu();
Just use:
#Override
public boolean onPrepareOptionsMenu(Menu menu) {
return false;
}
This is how I did it.
This is my original menu_main.xml file under the menu folder:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item android:id="#+id/action_settings" android:title="#string/action_settings"
android:orderInCategory="100" app:showAsAction="never" />
</menu>
Delete the item:
<item android:id="#+id/action_settings" android:title="#string/action_settings"
android:orderInCategory="100" app:showAsAction="never" />
Go to your main activity and comment out the following if (id == R.id.action_settings) :
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
// if (id == R.id.action_settings) {
// return true;
// }
return super.onOptionsItemSelected(item);
}
Run your app - the overflow menu icon is gone.
what worked for me was:
add the following:
android:visible="false" to the menu item in the menu file (global.xml) in the menu folder.
ex:
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="#string/action_settings"
android:visible="false"
/>
Just return false when calling the method onCreateOptionsMenu
Ex:
#Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!showToolbarMenu)
return false;
getMenuInflater().inflate(R.menu.main_activity, menu);
return super.onCreateOptionsMenu(menu);
}
Use the command
invalidateOptionsMenu();
And your problems will be solved.
This worked for me, I just deleted the line getMenuInflater().inflate(R.menu.main_activity, menu);
Don't implement the onCreateOptionsMenu(Menu menu) method. If you do anyway ,don't use this method getMenuInflater().inflate(R.menu.main, menu); as this line in the onCreateOptionsMenu method inflates the overflow button with the menus declared in resource R.menu.main.
I want to add a toggle switch to my action bar, however it does not seem to appear.
This is what I get as my screen
https://drive.google.com/file/d/0B1o-MgL-CQBFbml4VWZRdlptUWM/view?usp=sharing
I followed another post of the fourms to get the code -- How to add a switch to android action bar?
Tried all the suggested methods but am currently using Ezequiel's
This is my code
menu_main
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.json.example.myapplication.MainActivity" >
<item
android:id="#+id/switchId"
android:title=""
app:showAsAction="always"
android:actionLayout="#layout/switch_layout"/>
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:title="#string/action_settings"
app:showAsAction="never"/>
</menu>
switch_layout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<Switch
android:id="#+id/switchAB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
Activity that inflates menu
package com.json.example.myapplication;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Why is the switch not appearing, Am I simply mistyping something (if so what) or is there an error in the guide I am reading?
Change
android:actionLayout="#layout/switch_layout"
to
app:actionLayout="#layout/switch_layout"
Hi I am very new to android development and have gone through many questions in stack over flow but did not get any answer for this.
I want all the share intents to come as a drop down list but i get on button beside and one as a drop down list why is like this. I could explain better by sharing my screen shot but stackoverflow,com does not allow me to.
My mainactivity.java file is:
package com.example.myfirstapp;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.ShareActionProvider;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
MenuItem shareItem=menu.findItem(R.id.action_share);
ShareActionProvider m=(ShareActionProvider)MenuItemCompat.getActionProvider(shareItem);
m.setShareIntent(getDefaultIntent());
return true;
}
private Intent getDefaultIntent() {
// TODO Auto-generated method stub
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
return intent;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
`
My main.xml is:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.myfirstapp.MainActivity" >
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:title="#string/action_settings"
app:showAsAction="never"/>
<item
android:id="#+id/action_search"
android:orderInCategory="100"
android:icon="#drawable/ic_action_search"
android:title="#string/action_search"
app:showAsAction="ifRoom|withText"
app:actionViewClass="android.support.v7.widget.SearchView"/>
<item
android:id="#+id/action_share"
android:icon="#drawable/ic_action_share"
android:orderInCategory="100"
android:title="#string/action_share"
app:showAsAction="always"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>
</menu>
PLEASE any one help me
The last share provider is shown for the user's convenience. If the user regularly uses the same provider, e.g. Facebook, then they can simply click on a single button to share, rather than having to drop down the list and then select it. Of course they can drop down the list and choose a different one if they want to.
Perhaps you only have 2 share providers installed, so it looks a bit awkward.