0

我有一个使用滑动菜单作为导航方式的应用程序。我想使用导航菜单在三个主要片段之间切换。目前我有一个 MainActivity 应该循环通过这三个片段。问题是,在三个主要片段中的每一个中,我都有按钮,当单击这些按钮时,应该启动另一个片段并将主要片段放在堆栈上以返回到它。

如何管理此导航,以便我能够使用一个主要活动来交换 3 个主要片段并处理每个主要片段上的子片段?

希望这已经足够清楚了!

4

2 回答 2

0

您必须在活动中使用容器。您可以用 FragmentManager 替换 Fragments。

例如布局活动:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragmentContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</FrameLayout>

和你的活动:

public abstract class SingleFragmentActivity extends Activity {


    protected abstract Fragment replaceContentFragment();


    protected int getLayoutActivity() {
        return R.layout.single_fragment_activity;
    }

    @Override
    public void onCreate(Bundle saveInstanceState) {
        super.onCreate(saveInstanceState);
        this.setContentView(this.getLayoutActivity());
        this.addFragment();
    }


    private void addFragment() {
        FragmentManager fragmentManager = this.getFragmentManager();

        Fragment fragment = fragmentManager
                .findFragmentById(R.id.fragmentContainer);

        if (fragment == null) {
            fragment = this.replaceContentFragment();
            fragmentManager.beginTransaction()
                    .add(R.id.fragmentContainer, fragment).commit();
        }

    }
}

您可以让您的活动继承自 SingleFragmentActivity 并覆盖 replaceContentFragment 方法。

于 2013-07-24T20:13:47.163 回答
0

你有几个选择:

  • Interfaces
  • 生产/订阅使用Otto

对于第一个选项,您可以像这样创建Interface on theFragment 端:

public Temp foo;

public interface Temp
{
    public void tempSelected(int i);
}

然后在您的 上MainActivity,您使用该方法扩展 Fragment,如下所示:

public class MyMainActivity extends MyFragment.Temp

这将希望您覆盖 Temp 提供的方法。

第二个选项是使用 Otto 和订阅和生产方法。最好的解释是这里

希望这可以帮助!

于 2013-07-24T20:13:56.560 回答