2016-05-06 14 views
-1

私は1つの活性とトウフラグメントを持っています。アプリケーションが起動すると、フラグメント1をアクティビティにロードします。フラグメントを別のフラグメントに置き換えます

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/fragment_place" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    </FrameLayout> 
</LinearLayout> 

フラグメント1にボタンがあり、クリックしたときにフラグメントトウ(ロード親フラグメントコンテナ)に置き換えます。フラグメント1とトウのレイアウトは、次のようになります。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <Button 
     android:id="@+id/replace" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Replace" /> 
</FrameLayout> 

エラーが発生し、アプリケーションが停止します。このようにすることは可能ですか?

+0

問題は何ですか? – F43nd1r

+0

@ F43nd1r質問を編集しました。 –

+0

今質問があります。しかし、あなたの問題に関する情報はまったくありません。コードとスタックトレースが必要です。 http://stackoverflow.com/help/how-to-ask – F43nd1r

答えて

1

はちょうどあなたのフラグメントボタンクリックリスナーにこのコードを書きたいということ。このようなもの

Button button = (Button) findViewById(R.id.fab); 
button.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View view) { 
    Fragment fragment = null; 
    fragment = new YourFragment(); 
    FragmentManager frgManager = getSupportFragmentManager(); 
    FragmentTransaction ft = frgManager.beginTransaction(); 
    ft.addToBackStack(null); 
    ft.add(R.id.your_fragment_layout, fragment); 
    ft.commit(); 

    } 
}); 
1

これをボタンのonclicklistnerに入れます。 getFragmentManager()。beginTransaction()。replace(R.id.fragment_place、new Second_fragment())。commit();

// second_fragment ----あなたは:)膨らま

0

これを試す 最初にインターフェイスを作成します。 -

public interface Communicator 
{ 
    public void responde(); 
} 

次に、あなたのアクティビティにこのインテーフェイスを実装します。 このコードを書き換えると、first fragment to secondが置き換えられます。その後

@Override 
public void responde(){ 
    FragmentManager manager = getFragmentManager(); 
    FragmentTransaction transation = manager.beginTransaction(); 
    SecondFragment secondFragment = new SecondFragment(); 
    transation.replace(R.id.myActivity, secondFragment, "secFrag"); 
    transation.commit();} 

最初のフラグメントに

Communicator comm; 

public void onActivityCreated(Bundle savedInstanceState){ 
super.onActivityCreated(savedInstanceState); 
comm = (Communicator)getActivity();} 
//button on click 
public void onClick(View v) {comm.responde();} 
をコードを追加し、それが動作します願っています。

+0

Communicatorを使用する理由は? –

+1

あるフラグメントから他のフラグメントにデータを送信したい場合は、これが必要です –

関連する問題