2017-01-04 8 views
0

アクティビティで戻るボタンを押すと、アクティビティのデータをフラグメントに渡そうとしています。 バックボタンでデータをアクティビティからフラグメントに送信する

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    LOGD("Details", "Yes onActivityResult call"); 
} 

断片で

活動

@Override 
public void onBackPressed() { 
    Intent returnIntent = new Intent(); 
    setResult(Activity.RESULT_CANCELED, returnIntent); 
    finish(); 
} 

中ですが、このフラグメントonActivityResultof呼ば取得されていません。

私が試してみました。

ありがとうございました。 > yourFragment.setValue(XX)

public class MainActivity extends FragmentActivity { 

    HeadlinesFragment firstFragment; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.news_articles); 

     // Create a new Fragment to be placed in the activity layout 
     firstFragment = new HeadlinesFragment(); 

     // Add the fragment to the 'fragment_container' FrameLayout 
     getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, firstFragment).commit(); 
    } 

    @Override 
    public void onBackPressed() { 
     firstFragment.setData("yourString"); 
     finish(); 
    } 
} 

public class HeadlinesFragment extends Fragment { 

    String data; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.article_view, container, false); 
    } 

    public void setData(String yourData){ 
      data = yourData; 

    } 
} 
+1

'onActivityResult'と呼ばれるこのアクティビティでいる

書き込みフラグメントが呼び出されます。 –

+0

「LOGD」?それはタイプミスですか? – John

+0

あなたの断片は彼の活動の文脈にあり、より正確にはその上にあります。あなたが必要とするものを明確にするためにあなたのシナリオを指定してください – firegloves

答えて

0

、親活性の断片への参照を保持断片& における変数のセッターを作成onBackPressed()は、値を設定しますコード:フラグメントは、その続きの活動の

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
    //replace contentContainer with container defined in your activity 
     Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.contentContainer); 
     fragment.onActivityResult(requestCode, resultCode, data); 
    } 
} 
+0

ありがとう、私はアンドロイドには新しく、これを行う方法がわかりません – John

+0

アップデートされた答えをチェックしてください –

関連する問題