Dusan Dimitrijevic
Dusan Dimitrijevic

Reputation: 3219

How to create an actionBar in activity which is extending to other activities?

I have created a BaseActivity, which is extending all other activites, but now I don't know how to create an action bar there. I was trying, but didn't have luck. Any help would be appreciated.

Here is the code of my BaseActivity, which is extending all other activities:

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public abstract class BaseActivity extends Activity {

    ActionBar actionBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutResourceId());      
        actionBar = getActionBar();

    }

    protected abstract int getLayoutResourceId();

    @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);
    }

    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
        overridePendingTransition(R.anim.slide_in_back, R.anim.slide_out_back);
    }

}

Upvotes: 1

Views: 1731

Answers (1)

Gabriele Mariotti
Gabriele Mariotti

Reputation: 363637

You can achieve it in many ways.

For example you can use a Toolbar in each layout. Something like this:

public abstract class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutResourceId());     

       Toolbar toolbar = (Toolbar) findViewById(R.id.myToolbar);
       setSupportActionBar(toolbar);

       setupActionBar();
       //....

   }

   //...
}

public MyActivity extends BaseActivity{

    @Override    
    protected int getLayoutResourceId(){
         return R.layout.mylayout;
    }

    @Override
    protected void setupActionBar(){
        ActionBar actionBar = getSupportActionBar();
        //.....
    }

}

In your activity layout you can put your Toolbar:

layout/mylayout.xml

<LinearLayout ....>

   <android.support.v7.widget.Toolbar
       android:layout_height="wrap_content"
       android:layout_width="match_parent"
       android:id="@+id/myToolbar"
       android:theme="@style/MyToolbarTheme"
       app:popupTheme="@style/MyToolbarPopupTheme" />



</LinearLayout>

Upvotes: 2

Related Questions