我在“ActionBarMain.java”中创建了以下片段
FragMent1 fram1;
FragmentTransaction fragMentTra = null;
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (tab.getText().equals("Collection")) {
try {
rl.removeAllViews();
} catch (Exception e) {
}
fram1 = new FragMent1();
fragMentTra.addToBackStack(null);
fragMentTra = getFragmentManager().beginTransaction().add(rl.getId(), fram1);
fragMentTra.commit();
}
//And in here I create a new activity
Intent intent = new Intent(this, AddBookActivity.class);
startActivity(intent);
很自然地,我应该能够执行findFragmentByTag(fram1)
现在我在“AddBookActivity”中并向fram1
在simple_list_item_1
中输出的arraylist添加了一个新项目,所以现在我要刷新fram1,我该如何在AddBookActivity中执行此操作??
//AddBookActivity.java
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.addBook:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new FragMent1();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
//How do I find out the fragment id from findFragmentByTag(fram1)????
transaction.replace(R.id.your_fragment_id, newFragment);//Whats the id, I have the Tag that is fram1
transaction.addToBackStack(null);
transaction.commit();
return true;
case R.id.cancel:
super.finish();
return (true);
}
return (super.onOptionsItemSelected(item));
}
答案 0 :(得分:0)
findFragmentByTag
将String
作为参数,而不是Fragment
所以你要使用
fragMentTra = getFragmentManager().beginTransaction().add(rl.getId(), fram1, "fram1");
添加,并使用
替换transaction.replace(R.id.your_fragment_id, newFragment, "fram1");
找到片段,使用
findFragmentByTag("fram1");
这是否会更新您的列表是另一回事,因为您发布的代码没有解决这个问题。
编辑:
您的Activity
可以加载多个Fragments
,因此Activity
布局取决于屏幕尺寸。最简单的用途是它只对一个Fragment
足够大。此Fragment
是FragmentList
或包含ListView
。该列表需要Adapter
将数据绑定到列表。简单示例是ArrayAdapter
类型String
,例如ArrayAdapter<String>
。您指定ListView
以使用ArrayAdapter
作为其数据源。然后,您可以直接更改ArrayAdapter
的底层数据(ArrayList<String>
或String[]
)(要求适配器通知更改)或通过适配器本身。通过扩展适配器类可以实现更复杂的视图。
我建议您查看ListView
和FragmentList
SDK示例。