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" にいて、新しい項目を arraylist に追加fram1したsimple_list_item_1ので、fram1 を更新したいと思います。

//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

findFragmentByTagStringではなく、をパラメーターとして受け取ります。Fragment

だからあなたは使うだろう

fragMentTra = getFragmentManager().beginTransaction().add(rl.getId(), fram1, "fram1");

追加し、使用して置き換える

transaction.replace(R.id.your_fragment_id, newFragment, "fram1");

フラグメントを見つけるには、使用します

findFragmentByTag("fram1");

あなたが投稿したコードはそれに対処していないので、それがあなたのリストを更新するかどうかは別の問題です。

編集:

Activity複数の を読み込むことができるためFragmentsActivityレイアウトは画面サイズによって異なります。最も単純な使用法は、1 つだけの大きさですFragment。これFragmentは であるFragmentListか、 を含んでいListViewます。リストにはAdapter、データをリストにバインドする が必要です。簡単な例は、ArrayAdapterタイプのStringArrayAdapter<String>です。をそのデータ ソースとしてListView使用するように割り当てます。ArrayAdapter次に、下にあるArrayAdapterデータ (ArrayList<String>またはString[]) を直接 (アダプタに変更を通知する必要があります)、またはアダプタ自体を介して変更できます。アダプター クラスを拡張することで、より複雑なビューを実現できます。

SDK サンプルListViewを参照することをお勧めします。FragmentList

于 2012-11-16T00:36:17.917 に答える