我想在我的活动上设置工具栏,扩展 FragmentActivity 。我知道,对于使用data
方法,我们扩展setSuppoertActionBar(toolbar)
而不是AppCompatActivity
,但我覆盖FragmentActivity
方法,这是onMenuItemSelected(int featureId, MenuItem item)
中的最终方法,而最终方法无法覆盖。所以我只能扩展AppCompatActivity
。
这是我的代码:
FragmentActivity
我看到许多与该问题相关的答案,但每个人都说扩展public class MainActivity extends FragmentActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar); -> error is here
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch(item.getItemId()){
case R.id.action_search:
onSearchRequested();
break;
}
return super.onMenuItemSelected(featureId, item);
}
而不是AppCompatActivity
,但我想设置工具栏以及覆盖FragmentActivity
方法。
我该怎么办,请帮忙。
答案 0 :(得分:9)
当您使用NavigationDrawer
时,此功能非常好
使用此: -
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
然后根据onNavigationItemSelected
中不同标题的不同片段设置工具栏标题: -
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
sfm = getSupportFragmentManager();
Fragment fragment = new Fragment();
int id = item.getItemId();
if (id == R.id.nav_id) {
fragment = new YourFragment();
toolbar.setTitle("SET TOOLBAR NAME");
}else if (id == R.id.nav_id2) {
fragment = new YourFragment();
toolbar.setTitle("SET TOOLBAR NAME");
}
对于单个片段,首先要像这样自定义style.xml
: -
<style name="YourStyleName" parent="Theme.AppCompat.Light.DarkActionBar">
// ToDo as you want to do or as per your requirement
</style>
然后应用到您的自定义toolbar
: -
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/YourStyleName" >
// ...........
</android.support.v7.widget.Toolbar>
答案 1 :(得分:1)
您还可以创建自己的toolbar
:
首先设置主题以扩展Theme.AppCompat.Light.NoActionBar
<style name="style_1" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
</style>
请记住应用主题:
@Override
protected void onCreate(Bundle savedInstanceState) {
this.setTheme(R.style.style_1);
// ...
}
然后在Activity
的xml中,您可以设置自己的自定义toolbar
:
<include layout="@layout/my_toolbar"/>
其中@layout/my_toolbar
可能如下所示:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height"
app:contentInsetStart="0dp"
app:layout_collapseParallaxMultiplier="1.0">
<!-- insert your views here -->
</android.support.v7.widget.Toolbar>
答案 2 :(得分:0)
n4 = 0
if ( j1 != j6 )
++n4;
if ( j1 + 1 != j2 )
++n4;
if ( j4 + 1 != j1 )
++n4;
if ( j3 + 4 != j6 )
++n4;
if ( j5 + 2 != j3 )
++n4;
n5 = n4 + (j4 ^ 102) + j7;
答案 3 :(得分:0)
您应该从AppCompatActivity扩展Activity,因为这包括对Fragments和Toolbar的支持。 然后覆盖
onCreateOptionsMenu()和onOptionsItemSelected()方法
你不应该重写
onMenuItemSelected()
public class MainActivity extends AppCompatActivity { ...
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FragmentTransaction ft = getSupportFragmentManager.beginTransaction();
....
....
@Override
public boolean onCreateOptionsMenu(Menu menu) {
...
...
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
...
}