Я хочу разработать Android приложение для планшета в ландшафтном режиме с 2 фрагментами:Показано фрагменты бок о бок
- Фрагмент 1 содержит список кнопок.
- Фрагмент 2 - это пространство для одного фрагмента, связанного с кнопкой.
С «фрагменты кнопки, связанные с» я имею в виду следующее: Когда пользователь нажимает на кнопку в фрагменте 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>
Этот код приводит к следующим результатам:
- При запуске приложения, есть 4 кнопки на экране (от
mainfrag.xml
). - Когда я нажимаю
intro_button
илиsimulation_button
, вид изменяется наIntroFragment
илиSimulationFragment
, соответственно. - Когда я нажимаю кнопку «Назад», четыре кнопки снова видны.
Моя проблема: когда IntroFragment
или SimulationFragment
становятся видимыми, панель кнопок исчезает.
Как я должен изменить свой код таким образом, чтобы как кнопки панели и соответствующая «деталь» вид (IntroFragment
, SimulationFragment
) открыты в то же время (имеется достаточно пространства экрана для этого)?