2016-03-19 14 views
4

私はすでに私のMainActivityからRecipientFragmentを開始し、私のMainActivityからFragmentにデータを渡したいと思います。ここに私が実装したコードがあります。しかし、断片は始まりません。アクティビティからフラグメントを開始する方法

Bundle bundle = new Bundle(); 
      bundle.putString(ParseConstants.KEY_FILE_TYPE, fileType); 
      RecipientsFragment keyfile = new RecipientsFragment(); 
      keyfile.setArguments(bundle); 
      Fragment newFragment = new RecipientsFragment(); 
      FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
      transaction.commit(); 

intent.setDataを渡してそのデータをFragmentに取得する方法も知りたいと思います。現在、私はこのコードを持っています。

RecipientFragment

mMediaUri = getActivity().getIntent().getData(); 

MainActivity

Intent recipientsIntent = new Intent(this, RecipientsFragment.class); 
     recipientsIntent.setData(mMediaUri); 
+0

ただし、フラグメントを追加または置換するためのコードを追加していませんでしたか? –

答えて

15

:のようなものに変更し 。アクティビティのレイアウトxmlファイルにFrameLayoutを作成します。フラグメントはこれを行う置き換える

FragmentManager manager = getFragmentManager(); 
FragmentTransaction transaction = manager.beginTransaction(); 
transaction.add(R.id.container,YOUR_FRAGMENT_NAME,YOUR_FRAGMENT_STRING_TAG); 
transaction.addToBackStack(null); 
transaction.commit(); 

そしてへ:

FragmentManager manager = getFragmentManager(); 
FragmentTransaction transaction = manager.beginTransaction(); 
transaction.replace(R.id.container,YOUR_FRAGMENT_NAME,YOUR_FRAGMENT_STRING_TAG); 
transaction.addToBackStack(null); 
transaction.commit(); 

はSOの関連質問に、以下を参照してください。

その後にあなたの活動でこれを行うことはフラグメントを追加しますDifference between add(), replace(), and addToBackStack()

012ヨーヨーで

Basic difference between add() and replace() method of Fragment

Difference between add() & replace() with Fragment's lifecycle

Android Documentation

0

あなたが活動を開始し、それにRecipientsFragmentを添付していますが、まずフラグメント

2

を開始傾けることができ、あなたがアクティビティとサービスを開始フラグメントトランザクションを使用してフラグメントを開始します。 第二に、あなたの取引は何もしていません。あなたがあなたの活動にフラグメントを追加または交換するか

FragmentTransaction transaction = getFragmentManager(); 
    transaction.beginTransaction() 
     .replace(R.layout.container, newFragment) //<---replace a view in your layout (id: container) with the newFragment 
     .commit(); 
0

簡単な方法

  1. 新しいJavaクラスを作成

    public class ActivityName extends FragmentActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        if (savedInstanceState == null){ 
        getSupportFragmentManager().beginTransaction() 
          .add(android.R.id.content, new Fragment_name_which_you_wantto_open()).commit();} 
    } 
    } 
    
  2. uは

    Intent i = new Intent(Currentactivityname.this,ActivityName.class); 
    startActivity(i); 
    

uはフラグメント

<FrameLayout 
     android:id="@+id/frameLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
    </FrameLayout> 
  • このコードを貼り付けを開きたい、あなたの活動のもう一つの方法

    1. 置きフレームのレイアウトをフラグメントを呼び出したいウル活動あなたが断片を開こうとしているところ

      Fragment mFragment = null; 
           mFragment = new Name_of_fragment_which_you_want_to_open(); 
           FragmentManager fragmentManager = getSupportFragmentManager(); 
           fragmentManager.beginTransaction() 
             .replace(R.id.frameLayout, mFragment).commit(); 
      
  • +0

    私はまた、そのクラス名をマニフェストの最初の方法で定義するべきだと思います – mehmet

    関連する問題