1

そのタイトルが意味をなすかどうかはわかりませんが、私が何を望んでいるかを説明するのは難しいですが、やってみます.

ListFragment と MyFragment をフラグメント化する必要があります。デバイスが縦向きの場合、つまり両方のフラグメントが一緒に画面に収まらない場合は、LisFragment のみが表示されます。フラグメントをホストし、関連するデバイスの向きに関連するフラグメントを表示する MyActivity というアクティビティがあります。

次に、ユーザーはボタンを押して startActivityForResult を使用して検索を実行し、MyActivity 内で関数を呼び出して、実際に必要なことを実行できます。

電話が横向きの場合、つまり両方のフラグメントが表示されている場合、PasswordList フラグメント内から関数が正常に呼び出されます。ただし、電話が縦向きの場合、ListFragment は null であるため、関数は呼び出されません。以下は私が問題を抱えているコードです

public void performSearch(ArrayList<Spanned> passwords) {
    PasswordList passwordList = (PasswordList)getFragmentManager().findFragmentById(R.id.passwordListFragment);
    passwordList.performingSearch = true;
    passwordList.performSearch(passwords);
}

PasswordList は、私が上で話している ListFragment です。電話が横向きの場合、passwordList が機能し、performSearch 関数を実行できます。ListFragment が表示されていても電話が縦向きの場合、Null が返されるため、performSearch を実行できません。

どちらの方法でも performSearch 関数を実行するにはどうすればよいですか。ご協力いただきありがとうございます。

4

1 に答える 1

0

Androidをやってからしばらく経ちましたが、実際にはフラグメントが表示されていないので、あなたの場合、現時点では存在しないと思います。方向を切り替えるたびに、ビューが再描画されるなどと思います。

この関数は別のフラグメントにありますが、別のクラスに抽出することはできますか? 以前の Android プロジェクトの 1 つで、2 つのフラグメントを使用しましたが、電話/小型デバイスの場合は、2 番目のフラグメントをホストする FragmentActivity (compat ライブラリを使用) に転送するだけでした。テーブル バージョンでは、2 番目のフラグメント表示されました。

とてもエレガントというわけではなく、やや古いですが、私のプロジェクトはオープン ソースであり、見たい場合は www.github.com/zerkz を参照してください。

于 2012-10-04T20:15:11.107 に答える