2015-07-11 81 views
1

我創建了一個BaseActivity,它擴展了所有其他活動,但現在我不知道如何在那裏創建一個操作欄。我正在嘗試,但沒有運氣。任何幫助,將不勝感激。如何在擴展到其他活動的活動中創建一個actionBar?

這裏是我的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); 
    } 

} 
+0

使用AppCompatActivity而不是活動的,並使用工具欄的佈局中。然後你可以在setContentView(getLayoutResourceId())之後的onCreate方法中設置;呼叫。 –

+0

你是什麼意思,通過使用工具欄內佈局。我是否需要創建自定義工具欄?我是Android開發人員中的新成員。 –

回答

1

您可以通過多種方式實現。

例如,您可以在每個佈局中使用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> 
+0

我設法創建了一個工具欄,但我不知道如何在BaseActivity中找到工具欄的ID,因爲我沒有設置任何活動的內容視圖。 –

+0

對不起。你是對的。我剛剛更新了我的答案。 >該ID在工具欄的佈局中。 –

+0

對不起加布裏埃爾,我真的很新手,我創建了一個新的佈局,並命名爲app_bar,在那裏我實現了工具欄,但我仍然無法在BaseActivity中找到該工具欄的ID。難道我做錯了什麼? –

相關問題