Android - 从FragmentActivity到另一个片段的后退按钮

时间:2014-01-23 02:23:03

标签: android android-fragments

假设我有一个源自MainActivity A的ListFragment A.用户从列表A中按下列表并转到FragmentActivity B. FragmentActivity包含3个片段标签。

所以,我想向FragmentActivity B添加导航,以便它返回到ListFragment A.我该怎么做呢?

这是我的尝试,到目前为止没有运气:

public class ItemDetailActivity extends FragmentActivity implements ActionBar.TabListener {
    ...

    actionBar.setDisplayHomeAsUpEnabled(true);

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                LatestFragment fragment = new LatestFragment();
                getSupportFragmentManager().beginTransaction()
                        .replace(R.id.pager, fragment).addToBackStack(null)
                        .commit();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

LatestFragment是ListFragment A我想回去。

但是,我收到一条错误消息,说我必须实现OnLatestSelectedListener,因为在LatestFragment中,我已经设置了一个接口来传递值。

我还可以在onOptionsItemSelected内找到什么?

3 个答案:

答案 0 :(得分:2)

假设您使用标准意图启动了ItemDetailActivity,您应该能够使用这样的后退操作:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            super.onBackPressed();
            finish();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

答案 1 :(得分:1)

如果片段A在您的主要活动中,那么您还可以查看使用ActionBar。后退按钮将带您进入主要活动。它也很容易实现。

答案 2 :(得分:1)

我假设你的FragmentActivityB有后退按钮。 如果没有,你可以通过

获得它
getActionBar().setDisplayHomeAsUpEnabled(true);
<meta-data android:name="android.support.PARENT_ACTIVITY"
        android:value="#######" />

现在,你可以使用ViewNumber(1,2,3)等标志来识别以MainActivity为根的片段。

实施方法 onMenuItemSelected(....)并传递 viewNumber ie;你要展示的片段。

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
      //We are implementing this method to respond to the back button on the action bar.

      int itemId = item.getItemId();
        switch (itemId) {
        case android.R.id.home:

            Intent i = new Intent(this,MainActivity.class);
            i.putExtra("viewNumber",2);
            startActivity(i);
            break;
        }
        return true;
    }//onMenuItemSelected

MainActivity 中使用 Bundles 获取 viewNumber ,您可以使用这样的方法来计算并显示所需的片段。< / p>

private void displayView(int position) {
    // update the main content by replacing fragments
    Fragment fragment = null;
    switch (position) {

    case 1:
        fragment = new ListFragmentB();
        break;
    case 2:
        fragment = new ListFragmentA();
        break;

    default:
        break;
    }

    if (fragment != null) {
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment).commit();
            }
        }
       }

我希望它能解决你的问题。