2016-12-19 13 views
0

私はthisの解決策に従いましたが、他にもいくつかのものがありましたが、私が何かを見逃したように見えます。onActivityResultが呼び出されていない - おそらく他のフラグメントと「混合」されていますか?

Fragment Aでは、ユーザーがボタンをクリックすると、マップ内の場所が選択されます。

PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); 
try { 
    startActivityForResult(builder.build(getActivity()), PLACE_PICKER_REQUEST); 
} catch (GooglePlayServicesRepairableException e) { 
    e.printStackTrace(); 
} catch (GooglePlayServicesNotAvailableException e) { 
    e.printStackTrace(); 
} 

場所を選択した後も、同じ断片になりますが、アドレスは編集テキストになります。

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Log.d("checkCall", "here"); 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == 1) { 
      if (resultCode == Activity.RESULT_OK) { 
       // get the address 
       Place place = PlacePicker.getPlace(getActivity().getApplicationContext(), data); 
       String address = String.format("Place: %s", place.getAddress()); 
       Log.d("address", address); 
       editTextBizAddress.setText(address); 
      } else if (resultCode == Activity.RESULT_CANCELED){ 
       dialog("Error in getting the address"); 
      } 
     } else { 
      super.onActivityResult(requestCode, resultCode, data); 
     } 
    } 

だから、私の親アクティビティに - MainActivity

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
     case 1001: 
      if(resultCode == RESULT_OK){ 
       String tab = data.getExtras().getString("tab"); 
       if (tab.equals("profile")) { 
        viewPager.setCurrentItem(2); 
       } 
       tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
        @Override 
        public void onTabSelected(TabLayout.Tab tab) { 
         viewPager.setCurrentItem(tab.getPosition()); 
         View focus = getCurrentFocus(); 
         if (focus != null) { 
          hiddenKeyboard(focus); 
         } 
        } 

        @Override 
        public void onTabUnselected(TabLayout.Tab tab) { 

        } 

        @Override 
        public void onTabReselected(TabLayout.Tab tab) { 
         View focus = getCurrentFocus(); 
         if (focus != null) { 
          hiddenKeyboard(focus); 
         } 
        } 
       }); 
      } 
      break; 
     case 1: 
      super.onActivityResult(requestCode, resultCode, data); 
      break; 
    } 
} 

は、私はそれが一度だけ働く作ることができました。しかしそれ以降、それはもう働きません。私はそれが一度どのように動作するのか分かりませんが。

onActivityResultMainActivityにありますか?他のフラグメントもをMainActivityに使用すると混乱する可能性はありますか?

EDITrequestCodeは異なる値を持っていますが、まだ同じので、私はMainActivityonActivityResultを変更した - フラグメントでonActivityResult呼び出されません。

+0

Googleのサンプルをチェックしましたか:https://github.com/googlesamples/android-play-places/blob/master/PlacePicker/Application/src/main/java/com/example/google/playservices/placepicker/ PlacePickerFragment.java –

+0

@MavyaSoniはちょうど今チェックしました。違いはありません – August

答えて

2

私はこの問題は、アクティビティやフラグメントの両方において、約

であると仮定します。

この行をコメントしてください。それが動作しない場合 - onActivityResultのコールバックを受けるでショットを持っているフラグメントについて

+0

これは更新されたコードによるのですか? – August

+1

try:super.onActivityResult(requestCode、resultCode、data);スイッチ前のアクティビティで –

+0

が動作します。ありがとうございました!少し説明するのはどうですか? – August

1

(活動中の断片アリのコメントを解除から削除)反対してみてください、あなたの活動onActivityResult()を実装する必要がありますし、への呼び出しを持っている必要がありますsuperもあります。

さらに詳しい説明については、this回答もご覧ください。

関連する問題