FragmentでOnActvityResultが得られない戻り値の問題
1931 ワード
我々はFragmentでstartActivity ForResult()メソッドを使用してActivityを開き、Activity破棄を取得する必要がある場合にonActivity Result()を介して開くFragmentにデータを渡す.一般的には問題ありませんが、このFragmentが添付されている構造がActivity+ViewPager+Fragmentであれば、では、このFragmentのonActivity Result()メソッドではデータが取得できません(その添付された下位層のActivityに受け入れられました)、このFragment ActivityのonActivity Result()でこのFragmentのオブジェクトを取得し(tagを介して)、このfragmentのonActivity Result()を呼び出すだけでこのfragmentに値を渡すことができます:ActivityのOnActivity Result()で
データを取得するには、FragmentのOnActivity Result()メソッドを使用します.
次の方法ではこのFragmentを初期化で作成する必要があります.空のポインタが異常に見つかりません.
私たちはViewPagerを書くときに初期化時にこのように書くことに慣れました.
このようにOnActvityResult()メソッドでは、MineFragmentが初期化されていないため、メソッドを使用するのは問題があります.
正しい書き方は次のとおりです.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(mineFragment.getTag());
fragmentByTag.onActivityResult(requestCode, resultCode, data);
}
データを取得するには、FragmentのOnActivity Result()メソッドを使用します.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//
}
次の方法ではこのFragmentを初期化で作成する必要があります.空のポインタが異常に見つかりません.
findFragmentByTag(mineFragment.getTag())
私たちはViewPagerを書くときに初期化時にこのように書くことに慣れました.
fragments = new ArrayList<>();
fragments.add(0, new HomeFragment());
fragments.add(1, new ShoppingCartFragment());
fragments.add(2, new ShoppingCartFragment);
fragments.add(3, new MineFragment());
supportFragmentManager = getSupportFragmentManager();
mainPagerAdapter = new MainPagerAdapter(supportFragmentManager, fragments);
このようにOnActvityResult()メソッドでは、MineFragmentが初期化されていないため、メソッドを使用するのは問題があります.
supportFragmentManager.findFragmentByTag(MineFragment.class.getSimpleName());
正しい書き方は次のとおりです.
mineFragment = new MineFragment()
fragments.add(3, mineFragment );