覆盖操作栏中的"向上"按钮

Yoh*_*dry 6 android destroy

每当我点击操作栏中的<按钮时,我都希望避免父活动被销毁.

当我们按下那个按钮时,从AppCompatActivity调用哪个方法?

有没有办法让我覆盖它?有没有办法覆盖所有活动?

Ang*_*i H 15

每当我点击操作栏中的<按钮时,我都希望避免父活动被销毁.

按下该按钮后,您的父活动将暂停,而不是被销毁.

有没有办法让我覆盖它?有没有办法覆盖所有活动?

只需致电:

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
Run Code Online (Sandbox Code Playgroud)

您需要将其调用到要覆盖按钮的活动.没有其他选择可以称之为"一劳永逸".

当我们按下那个按钮时,从AppCompatActivity调用哪个方法?

默认情况下,它没有方法.如果您使用Toolbar,请setNavigationOnClickListener()在按下该按钮时拨打电话.

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // do something here, such as start an Intent to the parent activity.
        }
    });
Run Code Online (Sandbox Code Playgroud)

如果您使用ActionBar,该按钮将可用于Menu:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        // do something here, such as start an Intent to the parent activity.
    }
    return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)


Das*_*uni 7

对于那些正在搜索覆盖向上按钮与后退按钮相同并从活动正确导航到另一个按钮的人,只需覆盖

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == android.R.id.home){
        onBackPressed();
        return true;
    }
    return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)