2016-08-05 10 views
1

MainActivityTabLayoutViewPagerです。アンドロイド - オンアクティブ結果ビューページ

TabLayoutには、Tab1、Tab2、Tab3の3つのタブがあります。

私のTab2では、私はGPSを起動するように頼んだ(これは本当に問題ではない)。ポイントは、私は結果コードやデータを待っているいくつかの意図を始めたということです。だから、

status.startResolutionForResult((Activity) parentView.getContext(), REQUEST_CHECK_SETTINGS); 

、私は私のFragment TAB2にOnActivityResultを呼び出したい場合は、私は私の親の(MainActivityonActivityResultにこのような何かを行う必要があります。

case ACTIVITY_RESULT_FROM_TAB2:{ 
       FragmentManager fragmentManager = getSupportFragmentManager(); 
       Fragment fragment    = fragmentManager.findFragmentById(R.id.main_fragment); 
       if(fragment != null){ 
        ((Tab2Fragment) fragment).onActivityResult(requestCode, resultCode, data); 
       } 
      } 

最後に追加されたフラグメントがTab3だったため、キャスト例外(Tab3はTab2にキャストできません)を返します。をTab2から正しく呼び出すにはどうすればいいですか?

答えて

0

Tab2のFragmentにあるonActivityResult機能を無効にすると、活動していないので、あなたはそこに電話をかけます。

フラグメント内で結果を得るには、getActivity().startActivityForResult(intent,111);の代わりにstartActivityForResult(intent,111);を呼び出してください。

あなたはActivityクラスでこの..

オーバライドonActivityresult好きですし、そこからFragmentの関数を呼び出して、結果を渡すことができます。

+0

: ビューページャーのリストにフラグメントを追加します。 Tab2にキャストされる " –

0

ViewPagerを使用しているため、PagerAdapterを実装している必要があります。

ですので、Refrence Tab2でインデックスを作成することができます。このように

フラグメント断片= pagerAdapter.getItem(1)。

この

Tab2Fragment fragment= (Tab2Fragment) pagerAdapter.getItem(1); 
fragment.onActivityResult(requestCode, resultCode, data); 
+0

それは動作しません。つまり、Tab2FragmentでOnActiviyResultを呼び出しますが、TextViewがOnCreateにバインドされ、OnCreateメソッドが呼び出されていないように見えるため、null expectionを取得します。 –

+0

TextViewの話を共有したことはありませんでした。 nullpointer例外の解決法を提供します。詳細が必要です –

+0

あなたがしたいと思う完全なシナリオを教えてください。 –

0

はこのようにやろう試してみてください:はい、私はすでにTAB2にonActivityResultオーバーライドするが、これはまだTAB3ができない」私を返す

ArrayList<Fragment> fragment=new ArrayList<>(); 
    public void addFragments(Fragment fragment,String titles) 
{ 

    this.fragment.add(fragment); 
    this.tabTitles.add(titles); 
} 

public Fragment getFragment(int position) { 
    return fragment.get(position); 
} 


call getFragmnet function from activity: 

viewpagerAdapter.getFragmnet(viewpager.getcurrentIndex()) 
+0

なぜなら、私のtextviewはバインドされていないため、nullの実行理由があるからです。私はTAB2のonactivityの結果で私は私のtextviewのテキストを変更する必要がありますが、私はtextviewがnullであることを意味します。 –

関連する問題