我目前有不同的片段可以打开相同的活动。有没有办法实现向上导航按钮,这样当按下时,它会返回到来自的片段而不是它始终是起始片段?
我附上了一张图片,以便更好地说明这一点。
后退按钮工作正常,只是不确定在向上导航按钮。
感谢。
答案 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
最终结果是将提示用户返回调用新活动的片段。虽然我确信有更好的方法可以做到这一点。