2011-11-23 64 views
1

在编写代码时,我发现自己陷入了一片烂泥。Android:可以将一个片段添加到Viewflipper?

我有片段来显示我的应用程序的各个页面。我有一个搜索片段和一个选项片段,我想互相交互。有没有可能有一个片段可以正常访问,并使用viewflipper访问它?

Options Fragment中有一个viewflipper,它允许我显示涉及它的各种菜单。但是,我需要能够通过Options Fragment上的viewflipper访问搜索功能,同时也能够以普通Fragment的形式访问它(不能同时访问,但可以通过选项卡上的片段访问它条或从选项Fragment中的viewflipper)。

到目前为止,我已经用下面的代码来激活viewflipper视野改变:

public void onItemClick(AdapterView<?> av, View v, int pos, long id) { 
         if(moreViewFlipper.getChildAt(1) != null)//Check if any previously checked views 
         { 
          moreViewFlipper.removeViewAt(1); 
         } 
         switch(pos){ 
         case 0: // Profile 
          moreViewFlipper.addView(createProfileView(ctx), 1); 
          moreViewFlipper.setInAnimation(SlideAnimation.inFromRightAnimation()); 
          moreViewFlipper.setOutAnimation(SlideAnimation.outToLeftAnimation()); 
          moreViewFlipper.setDisplayedChild(1); 
          break; 
... 

是否可以使用上面(添加片段的观点,作为一个孩子的moreViewFlipper代码中,我将不胜感激如果有人能帮助我解决这个


编辑:。 一个朋友非常亲切设法指出我怎么会经过一些实验做到这一点显然,这是可以放置在一个视图中的片段,如果你的地方它在th e xml文件,其中包含您希望添加片段的视图。

在这种情况下,我创建了一个新的xml文件,并使用后退按钮将该片段放置在Linearview中。我使用上面的代码来调用一个函数,使视图膨胀并将它带入viewflipper和voala!只要你为你的片段设置了不同的ID就可以工作(如果它是像我一样的情况,在2个实例中调用)。

再次,遗憾浪费人们的时间,但感谢您的好意。

+0

是的,这是可能的......或没有,这不是......这取决于在createProfileView,moreViewFlipper,SlideAnimation.inFromRightAnimation,SlideAnimation.outToLeftAnimation ...通过片段你的意思是来自android的片段? ......换句话说......如果没有魔法宝珠,就不可能回答这个问题。 – Selvin

+0

对不起,问题的模糊性,漫长的一天。 MoreViewFlipper是android Fragment optionsFragment中的viewflipper。 creatprofileview只是在选项片段中创建一个视图,允许我显示用户信息。我只是好奇,如果我可以添加一个Android片段的Viewflipper,这本身就在一个片段,作为一个观点? – SKato

+1

如果我正确理解你,你会将片段添加到片段中?这是不可能的...我面临同样的问题,我有左侧的listview片段和细节fragmen右侧的细节片段我有标签...所以我wana使用片段,但经过研究后,我发现它是不可能有片段碎片...我已经结束了自定义视图... – Selvin

回答

0

对不起,迟到的回应。但可能是别人有类似的问题。

如果您使用ViewPager,则可以合并ViewFlipper和Fragments。将ViewPager -node放入main_layout.xml中的ViewFlipper -node中。操作栏仍然保留在原来的位置,您可以轻松地倒退到另一个视图。

如果你想处理硬件后退按钮,把类似的东西在你的主片段活动:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if(keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     if(this.vf.getCurrentView() != this.findViewById(R.id.pager))  //vf is a ViewFlipper's instance 
     { 
      this.vf.showPrevious(); 
      return true; 
     } 
    } 

    return super.onKeyDown(keyCode, event); 
}