在同样的问题上有很多答案。我尝试了所有这些。大多数人指出将ActionBarActivity的活动更改为将getAction更改为getSupportAction。但没有什么对我有用。
这个问题有解决方法吗?
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.drawable.logo_share);
getSupportActionBar().setDisplayUseLogoEnabled(true);
setContentView(R.layout.activity_main);
}
}
setDisplayShowEnabled上的例外
答案 0 :(得分:2)
如果您开始使用ActionBar,这是一个常见问题。
这是解决问题的步骤:
检查您的活动是否使用了正确的主题。每个活动声明都在AndroidManifest.xml中。像这样:
<activity
android:name="com.yourpackage.MainActivity"
android:label="@string/app_name"
android:theme="Theme.AppCompat.Light.DarkActionBar">
如果你找到像@style这样的主题:
<activity
android:name="com.yourpackage.MainActivity"
android:label="MainActivity"
android:theme="@style/AppTheme.NoActionBar">
然后您需要检查项目中的样式资源。
检查您的活动布局。
如果您创建从Android Studio生成的项目,则应该具有以下内容:
<android.support.design.widget.CoordinatorLayout
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="match_parent"
android:fitsSystemWindows="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/activity_app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<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/AppTheme.PopupOverlay"/>
</android.support.design.widget.AppBarLayout>
<!--- Here Your Layout -->
</RelativeLayout>
您会看到有一个视图android.support.v7.widget.Toolbar
toolbar
。这意味着您需要绑定Activity中的工具栏。像这样:
public class MainActivity extends AppCompatActivity {
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar = (ToolBar)findViewById(R.id.toolbar);
// then you can set the toolbar
setSupportActionBar(mToolbar);
}
}
答案 1 :(得分:1)
在setDisplayHomeAsUpEnabled之前检查getSupportActionBar()是否为null。
if(getSupportActionBar() != null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
答案 2 :(得分:1)
使用SupportActionBar。你必须遵循以下步骤
请删除setContentView(R.layout.activity_main);在onCreate方法结束时。
答案 3 :(得分:1)
在activity_main xml中添加工具栏:
('TreeControl'->'TabItemControl'->'ScrollBarControl').
添加
后 <include
android:id="@+id/toolbar"
layout="@layout/layout_custom_toolbar" />
对于Style:
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/MyCustomToolbarPopup"
app:theme="@style/MyCustomToolbar">
<!-- This is a centered title -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/toolbar_title"
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:gravity="center_vertical"
android:orientation="horizontal"
android:layout_weight="1"
android:textColor="@android:color/white"
android:textSize="@dimen/font_18sp"
android:text=""
android:visibility="visible" />
</LinearLayout>
并在“创建方法设置工具栏”
中 <!--to customise tool bar widgets-->
<style name="MyCustomToolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<!--color for the title of toolbar-->
<item name="android:textColorPrimary">@android:color/white</item>
<!--color for the toolbar icons-->
<item name="android:textColorSecondary">@color/colorAccent</item>
<!-- <item name="actionMenuTextColor">@color/transparent_white</item>-->
</style>
<!--Toolbar Popup-->
<style name="MyCustomToolbarPopup" parent="ThemeOverlay.AppCompat.Light">
<!--color for the title of toolbar-->
<item name="android:textColorPrimary">@color/color_576069</item>
<!--color for the toolbar icons-->
<item name="android:textColorSecondary">@color/color_576069</item>
</style>
答案 4 :(得分:1)
这是最简单的ONE LINE解决方案。
我认为你的价格低于java.lang.NullPointerException
:
android.support.v7.app.ActionBar.setDisplayShowHomeEnabled(boolean)
:尝试调用虚方法'voidgetSupportActionBar()
” 在空对象引用上
<强>说明强>
#。当您使用AppCompat
时,您必须为包含MainActivity
的{{1}}设置至少一个ActionBar
主题。
例如:
您可以在themes
下面使用ActionBar
Theme.AppCompat
Theme.AppCompat.Light
Theme.AppCompat.Light.DarkActionBar
#。根据您的comment
,这是您的styles.xml
。
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
<强> SOLUTION:强>
只需将此AppTheme
设置为MainActivity
中的AndroidManifest.xml
。
<activity
android:name=".MainActivity"
android:theme="@style/AppTheme">
...............
....................
</activity>
仅供参考,我已尝试使用此功能并且功能完美。
<强>输出:强>
希望这会有所帮助〜
答案 5 :(得分:0)
将此主题用于您的活动:
android:theme="@android:style/Theme.Holo.Light.DarkActionBar"