试图建立灵活的用户界面

时间:2014-08-14 19:13:16

标签: android user-interface android-fragments

我正在尝试使用灵活的用户界面制作应用。 我已经实现了手机设备(我有一个活动和多个片段),我所做的是:主要片段是仪表板,当我点击它的一个按钮时,他的仪表板被替换通过一个新片段(点击的功能)。这是代码:

仪表板片段:

public class DashboardFragment extends Fragment {

    GridView gridView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        return inflater.inflate(R.layout.activity_dashboard, container, false);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        gridView=(GridView)getView().findViewById(R.id.dashboard_grid);
        gridView.setAdapter(new ImageAdapter(getActivity()));
        gridView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                Fragment fragment = null ;

                switch (position) {
                case 0:
                    fragment = new TestFragment();
                    break;
                case 1 :
                    fragment = new TestFragment();
                    break;
                case 2 :
                    fragment = new TestFragment();
                    break;
                case 3 :
                    fragment = new TestFragment();
                    break;
                case 4 :
                    fragment = new TestFragment();
                    break;
                }
                transaction.replace(R.id.container, fragment);
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });

    }
}

和我的主要活动:

public class MainActivity extends FragmentActivity{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (findViewById(R.id.container) != null) {
            if (savedInstanceState != null) {
                return;
            }

            // Create an instance of ExampleFragment
            DashboardFragment firstFragment = new DashboardFragment();
            firstFragment.setArguments(getIntent().getExtras());
            getSupportFragmentManager().beginTransaction().add(R.id.container, firstFragment).commit();
        }
    }


}

现在,我想要的是调整此代码并使用平板电脑的布局,左侧是仪表板,右侧是选择的片段,如下所示:

enter image description here

我该怎么办?我已经尝试调整this示例,但我不能,因为他们只更新片段,他们不会替换它。

1 个答案:

答案 0 :(得分:1)

检查great article about multi-pane development。 它还包括一个例子(第10和11节)

基本上你可以检查你的&#34;片段B&#34;是否有片段元素。在当前的布局中。如果是,则只更新其内容,如果不是,则启动在其布局中具有该内容的活动,或者替换当前布局中的一个。

DetailFragment fragment = (DetailFragment) getFragmentManager().findFragmentById(R.id.detail_frag);
if (fragment==null || ! fragment.isInLayout()) {
    // start new Activity or replace
}
else {
    fragment.update(...);
}