简体   繁体   English

使用AppCompat支持库的自定义工具栏不显示后退按钮

[英]back button is not showing up using AppCompat support library's custom toolbar

i am working in a project where i need a custom toolbar as actionBar. 我在一个需要自定义工具栏作为actionBar的项目中工作。 i tried to use a custom toolbar in my layout file and define that activity theme as noActionBar in manifest file and use getSupportActionBar().setHomeButtonEnabled(true); 我试图在布局文件中使用自定义工具栏,并将该活动主题定义为清单文件中的noActionBar,并使用getSupportActionBar().setHomeButtonEnabled(true); i also used getSupportActionBar().setDisplayShowHomeEnabled(true); 我还使用了getSupportActionBar().setDisplayShowHomeEnabled(true); and getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true); getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true); but it didn't show up back button for me. 但它没有显示后退按钮。 then i also added android:parentActivityName=".MainActivity in my activity section in manifest file. still back button didn't show up. 然后我还在清单文件的我的活动部分中添加了android:parentActivityName=".MainActivity 。仍然没有返回按钮。

here is my main activity file. 这是我的主要活动文件。

public class MainActivity extends AppCompatActivity {

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

   public void next(View view) {
      startActivity(new Intent(this, Main2Activity.class));
   }
}

activity_main.xml file: activity_main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/activity_main"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context="com.example.takmilul.actionbar.MainActivity">

   <Button
      android:id="@+id/next"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginTop="40dp"
      android:onClick="next"
      android:text="Next"/>

</LinearLayout>

Main2Activity file: Main2Activity文件:

public class Main2Activity extends AppCompatActivity {

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

      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
      setSupportActionBar(toolbar);
      ActionBar actionBar = getSupportActionBar();
      getSupportActionBar().setDisplayShowHomeEnabled(true);
      getSupportActionBar().setHomeButtonEnabled(true);
      getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);
      actionBar.setTitle("Second Activity");
   }
}

activity_main2.xml file: activity_main2.xml文件:

<LinearLayout
   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:id="@+id/activity_main2"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context="com.example.takmilul.actionbar.Main2Activity">

   <android.support.v7.widget.Toolbar
      android:id="@+id/toolbar"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:background="@color/colorPrimary"
      app:theme="@style/ThemeOverlay.AppCompat.Dark">

   </android.support.v7.widget.Toolbar>
</LinearLayout>

styles.xml file: styles.xml文件:

<resources>
   <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
      <item name="colorPrimary">@color/colorPrimary</item>
      <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
      <item name="colorAccent">@color/colorAccent</item>
   </style>

</resources>

AndroidManifest.xml file AndroidManifest.xml文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.example.takmilul.actionbar">

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

            <category android:name="android.intent.category.LAUNCHER"/>
         </intent-filter>
      </activity>
      <activity android:name=".Main2Activity"
         android:parentActivityName=".MainActivity"
         android:theme="@style/Theme.AppCompat.Light.NoActionBar">
         <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
      </activity>
   </application>

</manifest>

and the build.gradle file like: 和build.gradle文件,如:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    defaultConfig {
        applicationId "com.example.takmilul.actionbar"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner     "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.4.0'
}

please help me to show up the back button and go to the previous page at pressing that back button. 请帮助我显示后退按钮,然后按该后退按钮转到上一页。

you have not set icon for back button. 您尚未为后退按钮设置图标。 set a navigation icon for it. 为其设置一个导航图标。 you can set it by xml file or java file. 您可以通过xml文件或java文件进行设置。 in xml file add line 在xml文件中添加行

app:navigationIcon="?attr/homeAsUpIndicator"

or in java file 或在Java文件中

getSupportActionBar().setHomeAsUpIndicator(getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha);

hope it works for you. 希望对你有效。

Just create a button in your activity_main2.xml file: 只需在activity_main2.xml文件中创建一个按钮:

    <LinearLayout
    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:id="@+id/activity_main2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.takmilul.actionbar.Main2Activity">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    app:theme="@style/ThemeOverlay.AppCompat.Dark">

    <Button
        android:id="@+id/back"
        android:layout_width="30sp"
        android:layout_height="30sp"
        android:background="@drawable/back_arrow"
        android:layout_marginLeft="10dp"
        android:onClick="back"/>

</android.support.v7.widget.Toolbar>

And Main2Activity file: 和Main2Activity文件:

public class Main2Activity extends AppCompatActivity {


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

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    ActionBar actionBar = getSupportActionBar();
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);
    actionBar.setTitle("Second Activity");
    }

public void back(View view) {
   finish();
   }
   }

package com.example.saloni; 包com.example.saloni;

import android.os.Bundle; 导入android.os.Bundle;

import android.support.v7.app.AppCompatActivity; 导入android.support.v7.app.AppCompatActivity;

import android.support.v7.widget.Toolbar; 导入android.support.v7.widget.Toolbar;

public class Main2Activity extends AppCompatActivity { 公共类Main2Activity扩展了AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fhg);
    setToolbar();  
    }
    private void setToolbar() {
    setSupportActionBar(((Toolbar) findViewById(R.id.toolbar)));        
    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setHomeAsUpIndicator(R.drawable.back);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

} }

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textColorPrimary">#FFFFFF</item>
</style>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM