并排显示片段

时间:2013-03-01 09:13:18

标签: android android-fragments

我想在横向模式下为平板电脑开发一个Android应用程序,其中包含2个片段:

  1. 片段1包含按钮列表。
  2. 片段2是与按钮相关的片段的空间。
  3. “按钮相关片段”是指以下内容:当用户按下片段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_buttonsimulation_button时,视图将分别更改为IntroFragmentSimulationFragment
    3. 当我按“返回”按钮时,四个按钮再次可见。
    4. 我的问题:当IntroFragmentSimulationFragment可见时,按钮面板会消失。

      我应该如何修改我的代码,以便 按钮面板各自的“详细信息”视图(IntroFragmentSimulationFragment)可见同时(有足够的屏幕空间)?

1 个答案:

答案 0 :(得分:0)

此类示例显示在Android SDK中的APIDemos中。他们将左侧面板作为列表视图,所选项目在右侧显示相关片段。

你可以在

中找到它
  

SDK \机器人-sdk_r11窗口\ Android的SDK窗口\样品\机器人-14 \ ApiDemos