0

2つのフラグメントを含む横向きモードのタブレット用のAndroidアプリケーションを開発したいと思います。

  1. フラグメント1には、ボタンのリストが含まれています。
  2. フラグメント2は、ボタン関連のフラグメントの1つのためのスペースです。

「ボタン関連のフラグメント」とは、次のことを意味します。ユーザーがフラグメント1のボタンを押すと、そのボタンに関連付けられたフラグメントがフラグメント2に表示されます。

フラグメント1は一種のナビゲーションパネルです。

これを実装するために、私は次のコードを書きました:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name="mypackage.MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="landscape" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".impl.activities.IntroActivity"></activity>
    <activity android:name=".impl.activities.SimulationActivity"></activity>

</application>

MainActivityこのように見えます:

public class MainActivity extends Activity implements IMainActivity {
  @Override
  public void onCreate(final Bundle aSavedInstanceState) {
    super.onCreate(aSavedInstanceState);
    setContentView(R.layout.main);
  }

  @Override
  public void show(final View aView, final Class<? extends Activity> aActivityClass) {
    startActivity(new Intent(this, aActivityClass));
  }


}

main.xml次の内容があります:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:name="mypackage.fragments.ContentFragment"/>

ContentFragmentこのように見えます:

public class ContentFragment extends Fragment {

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
      Bundle savedInstanceState) {
    final View view = inflater.inflate(R.layout.mainfrag, container, false);

    IMainActivity mainActivity = (IMainActivity) this.getActivity();
    final IntroButtonClickListener introListener = new IntroButtonClickListener(
        mainActivity, IntroActivity.class);

    final IntroButtonClickListener simulationListener = new IntroButtonClickListener(
        mainActivity, SimulationActivity.class);


    view.findViewById(R.id.intro_button).setOnClickListener(introListener);
    view.findViewById(R.id.simulation_button).setOnClickListener(simulationListener);

    return view;
  }

IntroButtonClickListener

  class IntroButtonClickListener implements View.OnClickListener {
  private IMainActivity mainActivity;
  private Class<? extends Activity> activityClass;

  public IntroButtonClickListener(final IMainActivity aMainActivity,
      final Class<? extends Activity> aActivityClass) {
    this.mainActivity = aMainActivity;
    this.activityClass = aActivityClass;
  }

  @Override
  public void onClick(final View aView) {
    this.mainActivity.show(aView, this.activityClass);
  }

}

mainfrag.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="vertical">

  <Button
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="25"
    android:id="@+id/intro_button"
    android:text="@string/intro_button"/>

  <Button
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="25"
    android:id="@+id/simulation_button"
    android:text="@string/simulation_button"/>

  <Button
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="25"
    android:id="@+id/statistics_button"
    android:text="@string/statistics_button"/>

  <Button
    android:layout_width="fill_parent"
    android:layout_height="0dip"
    android:layout_weight="25"
    android:id="@+id/help_button"
    android:text="@string/help_button"/>


</LinearLayout>

このコードにより、次の結果が得られます。

  1. アプリケーションを起動すると、画面に4つのボタンがあります(からmainfrag.xml)。
  2. intro_buttonまたはを押すsimulation_buttonと、ビューがそれぞれIntroFragmentまたはSimulationFragmentに変わります。
  3. 戻るボタンを押すと、4つのボタンが再び表示されます。

私の問題:IntroFragmentまたはSimulationFragment表示されると、ボタンパネルが消えます。

ボタンパネルそれぞれの「詳細」ビュー(、 )の両方が同時に表示されるようにコードを変更するにはどうすればよいですか(これには十分な画面スペースがあります)。IntroFragmentSimulationFragment

4

1 に答える 1

0

この種の例は、Android SDK にある APIDemos に示されています。リストビューとして左側のパネルがあり、選択されたアイテムは右側に関連するフラグメントを表示します。

あなたはそれを見つけることができます

SDK\android-sdk_r11-windows\android-sdk-windows\samples\android-14\ApiDemos

于 2013-03-01T09:21:09.790 に答える