片段寻呼机适配器

时间:2016-05-01 01:47:23

标签: android fragment fragmentpageradapter up-navigation

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

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

enter image description here

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

感谢。

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:0)

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

首先,您应该将启动新活动的片段的标记放入intent中。开始活动后,您可以在MainActivity中调用finish();

在新活动中,您覆盖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是否为null。如果没有,请获取片段的标记并加载它。

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

//Recreate the fragment

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