如何在"活动"中显示后退按钮

Saf*_*ari 4 android android-activity android-actionbar

我试过这段代码来展示我ProfileActivity:

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_profile) {
            Intent mainIntent = new Intent(Contracts.this, Profile.class);
            startActivity(mainIntent);
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
Run Code Online (Sandbox Code Playgroud)

当我点击个人资料菜单项目时,我可以看到我,ProfileActivity但我没有任何后退按钮,我ActionBar在之前的活动中返回.

那么,我该如何显示一些后退按钮?我的代码在我的菜单中显示活动是否正确?

Mac*_*ado 7

在您的个人资料活动中检查是否缺少某些内容:

public class Profile extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // etc...
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.action_profile:
            NavUtils.navigateUpFromSameTask(this);
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该函数NavUtils.navigateUpFromSameTask(this)要求您在AndroidManifest.xml文件中定义父活动

    <activity android:name="com.example.ServicesViewActivity" >
            <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.ParentActivity" />
    </activity>
Run Code Online (Sandbox Code Playgroud)

http://developer.android.com/design/patterns/navigation.html#up-vs-back

  • 问题非常简单 - 您的活动是从新的`android.support.v7.app.ActionBarActivity`继承而来.我们应该使用`getSupportActionBar()`而不是`getActionBar()`. (2认同)

Apu*_*rva 5

在放这个的onCreate()方法中Profile.class

getActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)

和这个,

@Override
public boolean onOptionsItemSelected(MenuItem menuItem)
{       
    onBackPressed();
    return true;
}
Run Code Online (Sandbox Code Playgroud)