我正在尝试使用灵活的用户界面制作应用。 我已经实现了手机设备(我有一个活动和多个片段),我所做的是:主要片段是仪表板,当我点击它的一个按钮时,他的仪表板被替换通过一个新片段(点击的功能)。这是代码:
仪表板片段:
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();
}
}
}
现在,我想要的是调整此代码并使用平板电脑的布局,左侧是仪表板,右侧是选择的片段,如下所示:
我该怎么办?我已经尝试调整this示例,但我不能,因为他们只更新片段,他们不会替换它。
答案 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(...);
}