TheDevMan
TheDevMan

Reputation: 5954

Rename menu item in Android

I would like to rename menu on click of an item. I tried the following but it didn't change.

I tried item.setTitle("LandScape"); or item.setTitle("Portrait");

Declare the menu:

    @Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);

    return true;
}

Do something on click on the menu item:

    @Override
public boolean onOptionsItemSelected(MenuItem item) 
{
    boolean result = true;

    switch(item.getItemId())
    {

    case R.id.oscillation_mode:
    {
        if(getScreenOrientation() == 1)
        {
            Log.e("Orientation","ABC"+getScreenOrientation());

            item.setTitle("LandScape");
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
        else 
        {

            item.setTitle("Portrait");
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }

        break;
    }

The text is the same. The default it is Portrait.

Upvotes: 0

Views: 258

Answers (1)

panini
panini

Reputation: 2026

when you call setRequestedOrientation() your Activity is destroyed and recreated, so any changes you make to in memory objects will be dropped. You should make these changes when the menu is shown instead

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    MenuItem oscillation = menu.findItem(R.id.oscillation_mode);
    if (getScreenOrientation() == 1){
        item.setTitle("LandScape");
    }else{
        item.setTitle("Portrait");
    }

    return true;
}

Upvotes: 2

Related Questions