I use this for change the menu:
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_log_in, menu);
return true;
}
but...
If i want that my activity haven't menu, how make it?
I want make activities without menu because i don't have navigation in this scenes. How make it?
Remove these two methods in your Activity:
#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_del, 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);
}
Related
This is my scenario: I have three fragments and I only want to show an action bar in one of those fragments. In the activity that creates the fragments, I currently have this code which correctly creates the menu bar:
#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_view_report, 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_view_report) {
Intent intent = new Intent(getApplicationContext(), ViewReportActivity.class);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
Then in one of the fragments of which I am trying to hide the menu bar I have this code:
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(false);
}
#Override
public void onPrepareOptionsMenu(Menu menu) {
menu.findItem(R.id.action_view_report).setVisible(false);
super.onPrepareOptionsMenu(menu);
}
Does anyone have any idea of what I am doing wrong or a suitable solution?
Thanks in advance
I'm an android application and I would display in my Action Bar icon, why I use a file main.xml
I call this menu in all my view, but I would like some on some page menu item does not appear, how to do this?
My Views extends BaseMenuActivity and BaseMenuActivity extends Activity.
do I report "onOptionsItemSelected" and "onCreateOptionsMenu" throughout my views?
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" >
<item android:id="#+id/action_settings"
android:title="#string/action_settings"
android:orderInCategory="100"
app:showAsAction="never" />
<item android:id="#+id/action_shopping_client"
android:title="client"
android:showAsAction="ifRoom|withText"/>
<item android:id="#+id/action_shopping_cart_buy"
android:icon="#drawable/shopping_cart_buy"
android:showAsAction="always"
android:title="buy" />
<item android:id="#+id/action_shopping_cart"
android:icon="#drawable/shopping_cart"
android:showAsAction="withText|ifRoom" />
in my activities :
#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 item= menu.findItem(R.id.action_settings);
item.setEnabled(false);
item.setVisible(false);
MenuItem item2= menu.findItem(R.id.action_shopping_cart_buy);
item2.setVisible(false);
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) {
Intent i = new Intent(this, SettingActivity.class);
startActivity(i);
}
if(id == R.id.action_shopping_cart_buy){
}
return super.onOptionsItemSelected(item);
}
Inside you BaseMenuActivity take a boolean that will be set inside the subclass.
and in onCreateOptionsMenu(Menu menu) inflate menu only based upon that boolean value.
You override this function public boolean onCreateOptionsMenu(Menu menu) {}
in every sub class and which Item want to display in class.
Example :
MenuItem item= menu.findItem(R.id.action_settings);
item.setEnabled(true);
But first you declare this item.setEnabled(false); in your parent class
You Can hide Menu By doing this
#Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
Replace Boolean false instead of true
#Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return false;
}
I understand how to create menu in Android. But what about the actions that they perform for each menu item? Do i have to specify them in each activity? or is there a "Android" way of doing this? I mean we can create a class and just refer to that class as it is Java but was thinking about "Android" way of doing it.
To be more clear, I create a menu in res/menu folder lets say standard_menu.xml and everything is looking good, but there is no accompanying java class file.
EDIT:
Ok I think i was not more clear. What I am trying to say is. Should I specify these actions for each menu item in EACH and EVERY activity that i use this menu?
Try like these. Implement these methods in your activity
#Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.your menu item id) {
//do some action
}
return super.onOptionsItemSelected(item);
}
following are the two functions that you have to override in your Activity :
#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);
}
you will override these in each of your Activity .
every activity class have method onCreateOptionsMenu. if you want same menu for more then one activity simple write some inflant() method thats it & for override what you can do is call your own method from same class. thats it.
for Activity1
#Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
return MyClass.myMenuClick(item);
}
for Activity2
//same
#Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
return MyClass.myMenuClick(item);
}
MyClass {...
public static boolean myMenuClick(MenuItem item){
int id = item.getItemId();
if (id == R.id.your menu item id) {
//do some action
}
return super.onOptionsItemSelected(item);
}
}
NOTE
My class can be anything. if you want to create external public class then also it wont make any problem. but its good practice if it can be an internal class.
or just make public static method in your MainActivity.
I created a new android project with the target being android Lollipop.
And I am testing the app on the device running lollipop LG G3. If I remove the title bar from the activity menu options are not displayed. Where in fact in the below versions the menu used to be visible at the the right bottom of the screen.
This is my code.
public class MainActivity extends ActionBarActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
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);
}
}
Just needed to long press the task manager button and the menu options appears.
When I created an activity it automatically added a back to main activity option in the action bar. It looks like those are the functions that do it:
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.app_settings, 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);
}
Is there a way to make it go back using finish()? Right now it looks like it resets some values that are saved and I want to keep them. When I tried working with finish() it didn't do it but i'm not sure how to use it in the action bar.
This is simpler and it works perfect:
public class BackButtonExample extends Activity {
#SuppressLint("NewApi")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.duahs);
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0B4C5F")));
bar.setDisplayHomeAsUpEnabled(true);
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
Try this
#Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId()==android.R.id.home {
finish();
return true; }
else{
return super.onOptionsItemSelected(item);
}
}