显示回操作栏上按钮(Display back button on action bar)

2019-08-18 03:12发布

我想显示一个Back button上的Action bar移动前一页/活动或到主页(第一开口)。 我不能做到这一点。

我的代码。

ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);

该代码是在onCreate

Answer 1:

嗯,这是一个简单的显示后退按钮

actionBar.setDisplayHomeAsUpEnabled(true);

然后你就可以自定义在后面的事件onOptionsItemSelected

case android.R.id.home:
this.finish();
return true;


Answer 2:

我认为onSupportNavigateUp()就是这样做的,请检查下面的步骤最好和最简单的方法。 步骤1是必要的,步骤2具有可选的。

步骤1示出的后退按钮:在添加此行onCreate()方法来显示后退按钮。

assert getSupportActionBar() != null;   //null check
getSupportActionBar().setDisplayHomeAsUpEnabled(true);   //show back button

回来点击第2步实施:重写此方法

@Override
public boolean onSupportNavigateUp(){  
    finish();  
    return true;  
}

多数民众赞成你完成
或步骤2的替代:您可以在清单文件作为加元的活动

<meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="MainActivity" />

编辑:如果您不使用AppCompat活动,则不要使用support的话,你可以使用

getActionBar().setDisplayHomeAsUpEnabled(true); // In `OnCreate();`

// And override this method
@Override 
public boolean onNavigateUp(){ 
     finish(); 
     return true; 
}

由于@atariguy发表评论。



Answer 3:

魔术发生在onOptionsItemSelected

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            // app icon in action bar clicked; go home
            Intent intent = new Intent(this, HomeActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}


Answer 4:

官方的解决方案

这两个代码片段添加到您的子活动

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    getActionBar().setDisplayHomeAsUpEnabled(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);
}

添加元数据和parentActivity体现支持下SDK。

 <application ... >
    ...
    <!-- The main/home activity (it has no parent activity) -->
    <activity
        android:name="com.example.myfirstapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        android:name="com.example.myfirstapp.SubActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

参考这里: http://developer.android.com/training/implementing-navigation/ancestral.html



Answer 5:

添加这些行的onCreate()

android.support.v7.app.ActionBar actionBar = getSupportActionBar();
   actionBar.setHomeButtonEnabled(true);
   actionBar.setDisplayHomeAsUpEnabled(true);

在onOptionItemSelected

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                //Write your logic here
                this.finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

希望对你有帮助..!



Answer 6:

试试这个代码,认为只有当你需要后退按钮。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //YOUR CODE
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    //YOUR CODE
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return true;
}


Answer 7:

在您onCreate方法添加:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

虽然在定义AndroidManifest.xml父活动(一次是在操作栏中的后退按钮被按下,将被称为活动):

在您的<activity>在清单的定义,添加一行:

android:parentActivityName="com.example.activities.MyParentActivity"


Answer 8:

我知道我有点晚,但可以通过下面的解决这个问题的文档直接。

元数据标签添加到AndroidManifest.xml (因此系统知道)

 <activity
        android:name=".Sub"
        android:label="Sub-Activity"
        android:parentActivityName=".MainChooser"
        android:theme="@style/AppTheme.NoActionBar">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value=".MainChooser" />
    </activity>

接下来,使你的背部(UP)按钮MainActivity

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

    // my_child_toolbar is defined in the layout file 
    Toolbar myChildToolbar =
        (Toolbar) findViewById(R.id.my_child_toolbar);
    setSupportActionBar(myChildToolbar);

    // Get a support ActionBar corresponding to this toolbar 
    ActionBar ab = getSupportActionBar();

    // Enable the Up button 
    ab.setDisplayHomeAsUpEnabled(true);
    } 

而且,你将被设置好了!

来源: Android开发者文档



Answer 9:

我知道上面有很多有用的解决方案,但是这一次我看了这篇文章(目前Android 2.1.2工作室与SDK 23)一些上述方法不起作用。

下面是我为子活动的解决方案是MapsActivity

首先,你需要添加parentActivity在

AndroidManifest.xml中

像这样 :

<application ... >
    ...
    <!-- Main activity (which has no parent activity) -->
    <activity
        android:name="com.example.myapp.MainActivity" ...>
        ...
    </activity>
    <!-- A child of the main activity -->
    <activity
        .....
        android:parentActivityName=".MainActivity" >
        <!-- Support Parent activity for Android 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myapp.MainActivity" />
    </activity>
</application>

其次,确保您的子活动扩展AppCompatActivity ,不FragmentActivity。

第三,重写onOptionsItemSelected()方法

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                // app icon action bar is clicked; go to parent activity
                this.finish();
                return true;
            case R.id.action_settings:
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

希望这将有助于!



Answer 10:

为了实现这一目标,有简单的两个步骤,

步骤1:进入AndroidManifest.xml并在添加此参数<activity>标签- android:parentActivityName=".home.HomeActivity"

例:

<activity
    android:name=".home.ActivityDetail"
    android:parentActivityName=".home.HomeActivity"
    android:screenOrientation="portrait" />

第2步:在ActivityDetail添加您的action为前一页/活动

例:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            return true;
    }
    return super.onOptionsItemSelected(item);
}


Answer 11:

在onCreate方法直写

Toolbar toolbar = findViewById(R.id.tool);
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }
}
@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return true;
}
@Override
public void onBackPressed() {
    super.onBackPressed();
    startActivity(new Intent(ActivityOne.this, ActivityTwo.class));
    finish();
}

这是XML文件 -

<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:id="@+id/tool">

在styles.xml其更改为

Theme.AppCompat.Light.NoActionBar

这是所有我们必须做的。



Answer 12:

试试这个,在你的onCreate()

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true);

而对于clickevent,

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                // app icon in action bar clicked; goto parent activity.
                this.finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }


Answer 13:

我用这种方式解决

@Override
public boolean  onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) {
        case android.R.id.home:
            onBackPressed();
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

@Override
public void onBackPressed(){
    Intent backMainTest = new Intent(this,MainTest.class);
    startActivity(backMainTest);
    finish();
}


Answer 14:

我的工作代码回去屏幕​​。

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

    case android.R.id.home:

        Toast.makeText(getApplicationContext(), "Home Clicked",
                Toast.LENGTH_LONG).show();

        // go to previous activity
        onBackPressed();

        return true;

    }

    return super.onOptionsItemSelected(item);
}


Answer 15:

 public void initToolbar(){
       //this set back button 
       getSupportActionBar().setDisplayHomeAsUpEnabled(true);
       //this is set custom image to back button
       getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_btn_image);
}


//this method call when you press back button
@Override
public boolean onSupportNavigateUp(){
    finish();
    return true;
}


Answer 16:

ActionBar actionBar=getActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

@Override
public boolean onOptionsItemSelected(MenuItem item) { 
        switch (item.getItemId()) {
        case android.R.id.home: 
            onBackPressed();
            return true;
        }

    return super.onOptionsItemSelected(item);
}


Answer 17:

这可能是太晚了回答,但我有一个在我看来更短,更实用的解决方案。

// Inside your onCreate method, add these.
ActionBar actionBar = getSupportActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);

// After the method's closing bracket, add the following method exactly as it is and voiulla, a fully functional back arrow appears at the action bar
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return true;
}


Answer 18:

这很简单,对我的工作非常出色

添加此内部onCreate()方法

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

添加此外onCreate()方法

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    onBackPressed();
    return true;
}


Answer 19:

在的OnCreate(); 写这篇设备 - >

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

然后实现以下方法在该类

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
    case android.R.id.home:
        // app icon in action bar clicked; go home
      onBackPressed();
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}


Answer 20:

的Manifest.xml

<activity
            android:name=".Activity.SecondActivity"
            android:label="Second Activity"
            android:parentActivityName=".Activity.MainActivity"
            android:screenOrientation="portrait"></activity>


文章来源: Display back button on action bar