2012-04-21 9 views
0

は、私は、次のデザインをしていレイアウトを実装したいです詳細は、この作業を取得するにはクリックフラグメントレイアウト一覧<-->詳細

た後、私はそれらのチュートリアルに従っ: Tutorial 1 Tutorial 2

期待通りに機能しました。

しかし、ポートレートでリストアイテムをクリックしたときに新しいアクティビティを開始する代わりに、 フラグメントを詳細に置き換えて、トランジションをアニメーション化できるようにします。

私は周りを回って、意見に問題がありました。その後、私は次の記事を読んで、プレースホルダを使用するために私のレイアウトを変更し、AN、プログラムの断片を追加します。 Article

をリストアイテムがちょうどクリックされたときにトリガーされるアクションは、詳細断片と彼の容器の中にリスト・フラグメントを置き換えます。

しかし、私がランドスケープに戻った場合、レイアウトのリスト部分は、コンテンツを置き換えたので、リストではなく詳細が表示されます。

この問題を解決する方法はありますか?

現時点では、2つのフラグメントプレースホルダをレイアウト、風景、肖像画、ラップコンテンツ、隠して表示することでこの作業を達成できましたが、これが正しいアプローチかどうかはわかりません?おそらく、ViewFlipperはより良いでしょうか?

ここのアニメーションも正しく動作しないため、同じトランザクションで非表示にして表示されます。

また、私がランドスケープモードになっていて、リストアイテムをクリックしてデータが表示され、ポートレートに戻ると、データビューが表示されます。リストは表示されませんが、データが既に表示されている場合のみです。

Atm私はインテントデータに渡されたフラグを使ってこれを管理し、正しいビューを再度表示/非表示にしました。

いずれかの代替案がありますか?

ありがとうございました。今数時間お試しいただきありがとうございます。

EDIT 私が持っている主な問題である、という私は1つのトランザクションでフラグメントを、私は隠しよう、正しく再生と表示されていない設定/アウトアニメーションでスライド。ここでは、/

は私が何を意味するかを確認するには、私は、フラグメントテストアプリでそれを実装する方法である:それはちょうど最初のフラグメントが出て摺動されていないので、他の1つのフラグメントとスライドを隠し

メイン。XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal"> 

    <FrameLayout 
     android:id="@+id/details_Fragment_Placeholder" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" > 
    </FrameLayout> 

    <FrameLayout 
     android:id="@+id/main_Fragment_Placeholder" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
    </FrameLayout> 

</LinearLayout> 

ListFragment onListItemClick:リストフラグメントを配置すると最初にリストを開くために、詳細のフラグメントの[戻る]ボタンをオーバーライドし、その後、バックスタックにそれを配置する必要があり

@Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
FragmentManager fragmentManager = getFragmentManager(); 
     Screen2Fragment fragment2 = (Screen2Fragment) fragmentManager 
       .findFragmentByTag(Screen2Fragment.TAG); 

     if (fragment != null) { 

      if ((getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)) { 

         .beginTransaction(); 

       transaction.setCustomAnimations(R.anim.slide_in_right, 
         R.anim.slide_out_left, android.R.anim.slide_in_left, 
         android.R.anim.slide_out_right); 

       Screen1ListFragment fragment1 = (Screen1ListFragment) fragmentManager 
         .findFragmentByTag(Screen1ListFragment.TAG); 
       transaction.hide(fragment1); 
       transaction.show(fragment2); 

       transaction.addToBackStack("ReturnToScreen1"); 

       transaction.commit(); 

      } 
     } 
    } 

答えて

0

押されたときにバックスタックを表示します。

+0

ありがとうございますが、それは私が持っている問題ではなく、すでにバックスタックのことでした。メインポストの問題を編集して詳細を説明します。 – JDC

関連する問題