经过数小时的搜索解决方案后,无法将按钮添加到操作栏

问题描述:

经过几个小时寻找解决方案以查找代码中的错误,我最终在这里提出了一个问题。我尝试了所有提供的解决方案,没错。也许我的代码有问题。经过数小时的搜索解决方案后,无法将按钮添加到操作栏

因此,这些都是我的代码:

AboutUsActivity.java:

public class AboutUsActivity extends AppCompatActivity { 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     // Respond to the action bar's Up/Home button 
     case android.R.id.home: 
      NavUtils.navigateUpFromSameTask(this); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_about_us); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 


    } 
} 

我AndroidManifest文件:

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".activity.LoginActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".activity.GeneralSettingActivity" android:parentActivityName=".activity.ProfileActivity"/> 
    <activity android:name=".activity.RegisterActivity" android:parentActivityName=".activity.LoginActivity"/> 
    <activity android:name=".activity.ResetPasswordActivity" android:parentActivityName=".activity.LoginActivity"/> 
    <activity android:name=".activity.HomeActivity" /> 
    <activity android:name=".activity.AboutUsActivity" 
     android:parentActivityName=".activity.HomeActivity" 
     android:theme="@style/AppTheme.ActionBar" 
     /> 
    <activity android:name=".activity.ApplyTutor" android:parentActivityName=".activity.HomeActivity"/> 
    <activity android:name=".activity.PrivacyPolicyActivity" android:parentActivityName=".activity.HomeActivity"/> 
    <activity 
     android:name=".activity.ProfileActivity" 
     android:label="@string/title_activity_profile" 
     android:theme="@style/AppTheme.NoActionBar" /> 
    <activity android:name=".activity.EditProfileActivity" android:parentActivityName=".activity.ProfileActivity"/> 
    <activity android:name=".activity.EarningActivity" android:parentActivityName=".activity.ProfileActivity"/> 
    <activity android:name=".activity.ScheduleActivity" android:parentActivityName=".activity.ProfileActivity"/> 
    <activity android:name=".activity.RatingReviewActivity" android:parentActivityName=".activity.ProfileActivity"/> 
    <activity android:name=".activity.RequestActivity"></activity> 
</application> 

我styles.xml:

<resources> 

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="android:windowFullscreen">false</item> 
    <item name="windowActionBar">false</item> 

</style> 

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 

</style> 

<style name="AppTheme.ActionBar"/> 


<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 

我activity_about_us.xml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.cqaai.tutorpal.activity.AboutUsActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:text="Page name: About Us"/> 

</android.support.constraint.ConstraintLayout> 

Android的显示器显示错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference 
                      at com.example.cqaai.tutorpal.activity.AboutUsActivity.onCreate(AboutUsActivity.java:32) 
+0

您是否指一个导航图标,点击后转到其他活动? – Xenolion

+0

+0

你看到后退箭头但它不起作用?或者你没有看到后退箭头? – Mehmed

编辑自己的活动,包括这两个重写方法:

public class AboutUsActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_about_us); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 


    } 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.about_us_activity, menu); 
    return true; 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
switch (item.getItemId()) { 
    // Respond to the action bar's Up/Home button 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
} 
return super.onOptionsItemSelected(item); 
} 

}

并制作一部新的Andro在您的res文件夹中右键单击项目结构中的res文件夹,然后选择资源类型:菜单中的资源目录。然后创建一个新的菜单资源文件,并在那里写了下面的代码:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    tools:context=".MainActivity"> 

<!-- other possible items --> 

</menu> 
+0

谢谢,此解决方案也适用! –

您正在使用Theme.AppCompat.Light.NoActionBar作为基础应用的主题,这就是为什么getSupportActionBar()返回null。顾名思义,这个主题没有行动栏。有两种解决方案。

首个解决方案:你可以用动作条改变你的主题,一个主题,像Theme.AppCompat.Light.DarkActionBar

二解决方案:您可以继续使用Theme.AppCompat.Light.NoActionBar,但你必须使用工具栏。对于这一点,你需要更新你的布局如下:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.cqaai.tutorpal.activity.AboutUsActivity"> 

    <android.support.design.widget.AppBarLayout 
     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> 

    <android.support.constraint.ConstraintLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <TextView 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:text="Page name: About Us" 
      app:layout_constraintBottom_toBottomOf="parent" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      app:layout_constraintTop_toTopOf="parent" /> 

    </android.support.constraint.ConstraintLayout> 

</android.support.design.widget.CoordinatorLayout> 

...和你AboutUsActivityonCreate()如下:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_about_us); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
} 

我希望现在的工作。

+0

喜当我AboutUsActivity.java添加工具栏,它给我一个错误:(android.support.v7.widget.Toolbar) 在AppCompatActivity不能应用于 到 (android.widget.Toolbar –

+0

NVM,它现在谢谢!你,错误只是知道是因为导入错误的工具栏。 –