我使用的是ListFragment在我的活动从数据库中显示的列表。我已经包含了一个搜索功能。不幸的是,“旧”ListFragments似乎保留在后台,包含查询结果的ListFragments显示在其后面。我如何避免显示旧的ListFragments?更换ListFragment
我FragmentActivity:
private Button buttonSearch;
private TextView searchString;
public static String search = null;
static IShoppinglist shoppinglistManager;
static IAktionen aktionenManager;
private AktionenListListFragment listFragment;
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "ListFragmentActivity created");
super.onCreate(savedInstanceState);
setContentView(R.layout.articlelist);
shoppinglistManager = new Shoppinglist(this);
aktionenManager = new Aktionen(this);
buttonSearch = (Button) findViewById(R.id.search_Button);
buttonSearch.setOnClickListener(searchListAktionen);
//show all entries on start
listFragment = new AktionenListListFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_articlelist, listFragment).commit();
}
OnClickListener searchListAktionen = new OnClickListener() {
public void onClick(View v) {
try{
searchString = (TextView) findViewById(R.id.input_search_bezeichnung);
search = searchString.getText().toString().trim();
Log.d(TAG, "search Button clicked "+search);
if(search.trim().length()==0){
search=null;
}
//show all entries on start
listFragment = new AktionenListListFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_articlelist, listFragment).commit();
}catch(Exception ex){
ex.printStackTrace();
}
}
};
由于提前,
更新:
感谢您的答案。我试图实现它们,但主要问题似乎是现在ListFragment中的onCreate和onActivityCreated方法被调用两次(正如我可以在我的日志消息中看到的那样)。
我的新代码:
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "ListFragmentActivity created");
super.onCreate(savedInstanceState);
//force commit
getSupportFragmentManager().executePendingTransactions();
if(getSupportFragmentManager().findFragmentByTag(tag) == null) {
setContentView(R.layout.articlelist);
shoppinglistManager = new Shoppinglist(this);
aktionenManager = new Aktionen(this);
buttonSearch = (Button) findViewById(R.id.search_Button);
buttonSearch.setOnClickListener(searchListAktionen);
listFragment = new AktionenListListFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_articlelist, listFragment,tag).commit();
}else{
Log.d(TAG, "ListFragment already exists");
}
}
我试图为我ListFragment一个独特的标签,但这个解决方案是行不通的。
我猜测,ListFragments的一个显示在背景和其他更新。
哎做了我对你的回答工作? – 2013-02-13 20:12:59
你好?不要告诉我你的那些人问问题,然后不upvote或选择答案.. – 2013-02-13 21:51:58
我编辑了我的问题 - 请参阅部分:更新。 – user1800825 2013-02-14 19:11:36