我目前有不同的片段可以打开相同的活动。有没有办法实现向上导航按钮,这样当按下时,它会回到来自的片段而不是它总是作为起始片段?
我附上了一张图片来更好地说明这一点。
后按按钮工作正常,只是不确定向上导航按钮。
谢谢。
我目前有不同的片段可以打开相同的活动。有没有办法实现向上导航按钮,这样当按下时,它会回到来自的片段而不是它总是作为起始片段?
我附上了一张图片来更好地说明这一点。
后按按钮工作正常,只是不确定向上导航按钮。
谢谢。
在你的片段中......
@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);
}
}
我的解决方案可能并不优雅,但它在某种程度上是有效的。
首先,您应该将启动新活动的片段的标签放入意图中。启动活动后,您将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
最终结果是用户将被提示回到调用新活动的片段。虽然我确信有更好的方法来做到这一点。