试图替换片段,但它继续显示相同的片段

时间:2016-05-06 16:09:39

标签: android android-fragments

我有两个碎片。对于像片段A和片段B这样的例子,当活动开始时,片段A被启动。现在我输入一些应该启动片段B的输入,它到达片段B(执行其代码)但它继续显示片段A. 什么可能出错?任何帮助将不胜感激。

Set<String> names = new TreeSet<>(); // Or set of your choice
names.add("Joe"); // Set contents ["Joe"]
names.add("Bob"); // Set contents ["Joe", "Bob"];
names.add("Joe"); // Set contents ["Joe", "Bob"];

我在MainActivity Class中运行此片段,现在在Searchview中输入一些文本后,AsyncTask被执行并在完成后我尝试运行另一个片段(如代码所示)。

if (names.add(name) {
  System.out.println("Added name " + name);
} else {
  System.out.println("Already added " + name);
}

1 个答案:

答案 0 :(得分:0)

那是因为你每次都这样做时都会添加一个片段(就我在你的代码中所理解的那样)。所以基本上你要做的就是在FragmentA中保留一个FragmentB对象和一个Activity对象。然后基于你替换而不是添加。添加时,它们只会重叠。这样做:

getFragmentManager().beginTransaction().replace(R.id.home_layout, homeScreenFragment, "Home Page").addToBackStack("Main Home Page").commit();

d