使用 noActionBar 创建后退按钮

Creating a back button with noActionBar

我花了几天时间学习 Android 开发,我承认我的代码并不漂亮,因为除此之外我还有几周 Java 的经验。我试图在我的第二个主 activity 页面上创建一个后退按钮以返回到第一个主 activity,但我遇到的唯一解决方案是在使用工具栏时。您将如何在使用 noActionBar 时添加此功能?

主要Activityxml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
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"
android:background="@drawable/clearwater"
android:scaleType="centerCrop"
tools:context="com.example.goodvibes.helloworld.MainActivity">



<Button
    android:id="@+id/button"
    style="@style/Widget.AppCompat.Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="146dp"
    android:background="@drawable/btn"
    android:fontFamily="cursive"
    android:text="DIVE"
    android:textSize="24sp"
    android:textStyle="bold" />




</RelativeLayout>

主要Activity2xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
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"
android:scaleType="centerCrop"
tools:context="com.example.goodvibes.helloworld.MainActivity">

<Button
    android:id="@+id/Button2"
    style="@style/Widget.AppCompat.Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="76dp"
    android:background="@drawable/timebutton"
    android:fontFamily="serif-monospace"
    android:text="Time Interval Between Dives"
    android:textSize="20sp"
    android:textStyle="bold" />

<ImageButton
    android:id="@+id/imageButton"
    style="@android:style/Widget.ImageButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="17dp"
    android:layout_marginStart="17dp"
    android:layout_marginTop="11dp"
    android:adjustViewBounds="false"
    android:background="@android:color/background_light"
    android:cropToPadding="false"
    android:tint="@android:color/background_dark"
    app:srcCompat="?android:attr/actionModeCloseDrawable" />


</RelativeLayout>

主要ActivityJava

package com.example.goodvibes.helloworld;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

public Button but1;

    public void init(){
        but1= (Button)findViewById(R.id.button);
        but1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {

                Intent toy = new 
 Intent(MainActivity.this,activity_main_2.class);

                startActivity(toy);

            }
        });
}


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

}

主要Activity2Java

package com.example.goodvibes.helloworld;

import android.content.Intent;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ViewAnimator;

public class activity_main_2 extends AppCompatActivity {




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




}
}

清单

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

<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=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" 
/>
        </intent-filter>
    </activity>
    <activity android:name=".activity_main_2"></activity>
</application>

</manifest>

有很多很棒的人给了我必须研究的答案。最后解决了我的问题:我在 xml 中的按钮代码下插入了 "android:onClick="ImageButton" fine 然后在相应的 java 文件下为我的第二个 activity I已插入:

public void ImageButton(View v)
{
    // some code
    finish();
}

首先你必须添加一个必需的工具栏,在创建工具栏之后你将按钮放在工具栏内,如下所示;

将您的 xml 布局文件更新为,

<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" >


        <ImageButton
            android:id="@+id/btn_back_toolbar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/back"
            />

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

还要在您的 Activity Class,

中包含以下 java 代码
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ImageButton back=findViewById(R.id.btn_back_toolbar);

    back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(this,AnotherActivity.class));
        }
    });

将此添加到您的布局文件中:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar_acashmemoreport"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary"
    app:theme="@style/ToolbarColoredBackArrow" />

在你的activity中:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_acashmemoreport);
setSupportActionBar(toolbar);


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(getResources().getColor(R.color.colorPrimaryDark));
}

// Show menu icon
final ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(true);
toolbar.setTitleTextColor(getResources().getColor(R.color.colorWhite));