0

我在“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,所以现在我想刷新 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));
        }
4

1 回答 1

0

findFragmentByTag将 aString作为参数,而不是 aFragment

所以你会使用

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类型。您指定将用作其数据源。然后,您可以直接更改s 底层数据(或)(要求适配器通知更改)或通过适配器本身。通过扩展适配器类可以实现更复杂的视图。StringArrayAdapter<String>ListViewArrayAdapterArrayAdapterArrayList<String>String[]

我建议查看ListViewSDKFragmentList示例。

于 2012-11-16T00:36:17.917 回答