2017-06-07 7 views
0

まず、ここですべてを読みます。 https://developer.android.com/guide/components/fragments.htmlアクティビティにフラグメントを追加

1つのアクティビティがあり、画面を水平に分割して2つのフラグメントを追加したいとします。私はXML上にフラグメントを追加する方法を知っていますが、私はそれを望んでいません。私はそれらをJavaに追加したい。

私のアクティビティがFragmentを拡張しない限り、FragmentManagerは機能しません。アクティビティでこれを行う必要がありますか、フラグメントの1つにフラグメントトランザクションメソッドを追加する必要がありますか?

私のアクティビティをFragmentに拡張すると、それもフラグメントになりますか?

フラグメントマネージャとfragmenttransactionをフラグメントのいずれかに置くと、どのようにしてアクティビティに接続できますか?

これは私が私の破片が

import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class ConversionActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_conversion); 

     NumpadFragment fragment = new NumpadFragment(); 
     FragmentManager fragmentManager = getFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     fragmentTransaction.add(R.id.numpad_layout,fragment); 
     fragmentTransaction.commit(); 

    } 
} 

に表示する活動であり、これは断片

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class NumpadFragment extends Fragment { 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_numpad,container,false); 
    } 
} 
+0

「私の活動が断片を拡張しない限り、問題はFragmentManager does not worksですか? –

+0

コードを使用してFragmentに追加するには、 'activity_conversion.xml'に2つのコンテナレイアウトを作成し、' fragmentTransaction.add(R.id. 、fragment);および 'fragmentTransaction.add(R.id。 、fragment); ' –

+0

' getFragmentManager() 'の代わりに' getSupportFragmentManager() 'を使いたいとします。 –

答えて

1

いくつかの候補の1つである:

  • 使用fragmentTransaction.replace(もしない限り、スタックに追加するフラグメントを必要とする)
  • フラグメントのコンテナとして、FrameLayoutを使用します。
  • "new"演算子で新しいフラグメントを作成しないでください。 newInstance()メソッドを代わりに追加し、そのmethrodを呼び出して新しいフラグメントインスタンスを作成します。また、フラグメントとアクティビティー間の相互作用を実装します。ヒント:Android Studioウィザードを使用して、プロジェクトにフラグメントを追加します。 Androidのメーカーはすでに、あなたは間違いなくgetSupportFragmentManager(あなたのフラグメントがあるのでandroid.support.v4.app.Fragment
  • DEBUGを使用する必要が
  • 含まれるすべての必要なメソッドとスケルトンを生成します! - 「私のアプリがクラッシュしている」と言ったら、それは役に立たない。あなたのlogcat/exception /を投稿してクラッシュの理由を表示してください。
+0

'replace'はスタックにフラグメントを追加する必要はありません。 –

+0

getSupportFragmentManagerを使用して私の質問にお答えいただきありがとうございます。 getFragmentManagerはandroid.support.v4.app.Fragmentと互換性がないためですか? – gunessun

関連する問題