【问题标题】:How to programatically add and remove view from Fragment如何以编程方式从片段中添加和删除视图
【发布时间】:2014-11-29 02:55:15
【问题描述】:

我想有两个.xml 有条件的片段布局文件我想启动一个并在某些事件上更改为另一个,尝试搜索 Javadoc 以找到相关方法,任何指针都会有帮助

【问题讨论】:

  • 使用 ViewAnimator 或直接调用 ViewGroup.addView*() / ViewGroup.removeView[At]()
  • @pskink 太好了,谢谢我一直在寻找这个,但是当我尝试删除 MapView 时,它保持灰色正方形,并且在触摸该正方形时它被删除,知道如何刷新视图
  • 您使用 ViewAnimator 还是直接添加/删除视图?如果你在模拟器上运行它,也可以试试 hierarchyviewer

标签: java android layout view fragment


【解决方案1】:

您需要创建extends Fragment 类和override onCreateView() 方法的两个类,并扩展您的布局。例如:

FragmentOne.java

   public class FragmentOne extends Fragment {
   @Override
   public View onCreateView(LayoutInflater inflater,
      ViewGroup container, Bundle savedInstanceState) {

       //Inflate the layout for this fragment

      return inflater.inflate(
              R.layout.fragment_one, container, false);


      }
    }

FragmentTwo.java

public class FragmentTwo extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater,
  ViewGroup container, Bundle savedInstanceState) {

  // Inflate the layout for this fragment

  return inflater.inflate(
          R.layout.fragment_two, container, false);


 }
}

在你的 MainActivity.java

    Fragment fr;

         if(view == findViewById(R.id.button2)) {
             fr = new FragmentTwo();

         }else {
             fr = new FragmentOne();
         }

         FragmentManager fm = getFragmentManager();
         FragmentTransaction fragmentTransaction = fm.beginTransaction();
         fragmentTransaction.replace(R.id.fragment_place, fr);
         fragmentTransaction.commit();

【讨论】:

  • 创建后可以修改吗?
  • 是的,您可以在任何需要实现的地方添加 MainActivity 代码。
  • 谢谢,我正在使用可滑动视图 androidhive.info/2013/10/… 我想要的是第一个选项卡我想要有 3 个步骤的过程,第二个选项卡应该少一步,我明白你将 Fragment 放入 MainACtivity 的观点但我不知道如何在这个例子中集成它
【解决方案2】:

试试这个..

public class FragmentCont extends Fragment {
  @Override
  public View onCreateView(LayoutInflater inflater,
    ViewGroup container, Bundle savedInstanceState) {

   //Inflate the layout for this fragment
   if(condition1){
    return inflater.inflate(
          R.layout.fragment_one, container, false);
   }else{
    return inflater.inflate(
          R.layout.fragment_two, container, false);
   }


  }
}

【讨论】:

  • 创建后可以修改吗?
  • 创建后,你必须在活动中改变它。在活动中有一个框架布局并使用片段管理器替换它,就像这里所做的那样stackoverflow.com/questions/7849490/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多