0

いくつかのフラグメントをインスタンス化するアクティビティが1つあります。

List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(Fragment.instantiate(this, HomeFragment.class.getName()));
fragments.add(Fragment.instantiate(this, BorrowedFragment.class.getName()));
fragments.add(Fragment.instantiate(this, LentFragment.class.getName()));
fragments.add(Fragment.instantiate(this, PeopleFragment.class.getName()));

これらのフラグメントはViewPagerにリンクされています。各フラグメントはSELECTステートメントを実行し、コンテンツをリストとしてユーザーに表示します。

問題は、HomeFragmentに、クリックするとフォームを表示するボタンがあるため、ユーザーがこのテーブルに情報を追加できることです。ユーザーが情報を追加すると、アクティビティをfinish()すると、HomeFragmentが再び表示されます。BorrowFragmentにスワイプすると、そこには何も表示されません。PeopleFragment(リストの最後)にスワイプして、BorrowedFragmentに戻る必要があります。その場合にのみ、情報が表示されます。

情報が挿入された時点で私がしていることは次のとおりです。

Button btDone = (Button) findViewById(R.id.buttonDone);
        btDone.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if(ck1.isChecked())
                    isIOwe = true;
                else
                    isIOwe = false;
                insertRecord();
                Toast.makeText(getApplicationContext(), "Record added", Toast.LENGTH_SHORT).show();
                /*FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
                ft.add(Fragment.instantiate(ctx, PeopleFragment.class.getName()), "test");
                ft.commit();*/
                finish();

            }
        });

フラグメントのライフサイクルを再開できるようにするために、FragmentTransactionで何かする必要があるかどうか疑問に思っていました。

何か助けはありますか?

ありがとう、フェリペ

4

1 に答える 1

0

フラグメントの getView メソッドでクエリを実行するとうまくいくはずです。

そうでない場合は、別の可能性があります。ViewPager についてはよくわかりませんが、フラグメントの 1 つが表示されたときに呼び出されるリスナーがあったとしても驚かないでしょう。フラグメントに、その子孫に executeQuery メソッドを実装させるインターフェースを実装させる場合、フラグメントのリストをループして、イベントが発生したときにそれを呼び出すことができます。

于 2012-05-28T10:05:46.160 に答える