如何在活动中创建一个actionBar,扩展到其他活动?

时间:2015-07-11 10:14:33

标签: android android-actionbar android-appcompat android-toolbar

我创建了一个BaseActivity,它正在扩展所有其他活动,但现在我不知道如何在那里创建一个操作栏。我在尝试,但没有运气。任何帮助,将不胜感激。

以下是我的BaseActivity的代码,它正在扩展所有其他活动:

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

}

1 个答案:

答案 0 :(得分:2)

你可以通过多种方式实现它。

例如,您可以在每个布局中使用Toolbar。像这样:

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();
        //.....
    }

}

在您的活动布局中,您可以放置​​工具栏:

布局/ 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>