そのため、私は Android DK に非常に慣れておらず、Fragments をいじり始めるまではかなり順調でした。
その核となるのは、アプリの画面に一連のボタンを配置することです。ユーザーが押すボタンは、画面に表示されるテキスト/スピナー/ボタンを変更します。
それをどのように実装することにしたかは、フラグメントを介したものでした。Fragment が表示されない理由がわかりませんが、これは比較的単純な例です。
比較的単純な activity_main.xml がありました。変数名を変更しましたが、以下を参照してください。
<LinearLayout android:id="@+id/mainActivity"
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"
android:orientation="vertical"
android:animateLayoutChanges="true" >
<Button
android:id="@+id/buttonD"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/d_name"
android:onClick="dMenuButton" />
<RelativeLayout
android:id="@+id/fragment_container"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
<Button
android:id="@+id/buttonR"
android:layout_below="@id/fragment_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/r_name"
android:onClick="rButton" />
</LinearLayout>
そして対応する MainActivity.java
public void dMenuButton(View view){
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.show(dFragment);
fragmentTransaction.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// remove title
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
dFragment = new DFragment();
fragmentTransaction.add(R.id.fragment_container, dFragment);
fragmentTransaction.commit();
}
}
そしてfragment_d.xml
<RelativeLayout 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"
android:orientation="vertical" >
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="20dp"
android:text="@string/text1"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/numD"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/text1"
android:layout_toRightOf="@id/text1" />
</RelativeLayout>
それぞれの DFragment.java で
public class DFragment extends Fragment {
static Spinner dSpinner;
ArrayAdapter<CharSequence> dAdapter;
RelativeLayout view;
public static DFragment newInstance() {
DFragment dFragment = new DFragment();
return dFragment ;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = (RelativeLayout) inflater.inflate(R.layout.fragment_d,
container, false);
createSpinners();
return view;
}
private void createSpinners() {
dSpinner = (Spinner) view.findViewById(R.id.numD);
dAdapter= ArrayAdapter.createFromResource(getActivity().getBaseContext(),
R.array.numD,
android.R.layout.simple_spinner_item);
}
}
現在、フラグメント レイアウトはその下のボタンを覆い隠しています。以下のコンポーネントを強制的に押し下げるための助けは素晴らしいでしょう.
前もって感謝します。