0

我目前有不同的片段可以打开相同的活动。有没有办法实现向上导航按钮,这样当按下时,它会回到来自的片段而不是它总是作为起始片段?

我附上了一张图片来更好地说明这一点。

在此处输入图像描述

后按按钮工作正常,只是不确定向上导航按钮。

谢谢。

4

2 回答 2

1

在你的片段中......

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

在您的活动中...

@Override
public void onBackPressed() {
    if ( viewPager != null && viewPager.getCurrentItem() != 0 ) {
        viewPager.setCurrentItem(0);
    }
}
于 2016-05-01T02:38:35.160 回答
0

我的解决方案可能并不优雅,但它在某种程度上是有效的。

首先,您应该将启动新活动的片段的标签放入意图中。启动活动后,您将finish();在 MainActivity 中调用。

在新活动中,您覆盖该onOptionsItemSelected方法,以便它创建一个新意图并启动 MainActivity。当然,您将在意图中再次存储片段的标签。

// Handles back button in ActionBar
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            Intent intent = new Intent(getApplicationContext(), MainActivity.class);
            intent.putExtra("lastFragment",value);
            startActivity(intent);
            finish();
            break;
    }
    return true;
}

最后 MainActivity 应该检查意图是否为空。如果没有,获取片段的标签并加载它。

Intent intent = getIntent();
if(savedInstanceState!=null) {
    lastFrag = savedInstanceState.getString("lastFragment");
}

//Recreate the fragment

最终结果是用户将被提示回到调用新活动的片段。虽然我确信有更好的方法来做到这一点。

于 2016-05-01T02:18:16.957 回答