アプリでフラグメントを使用して複数回インスタンス化しようとしていますが、最初のものしか作成できません。FragmentTransaction コードが呼び出されますが、2 番目のインスタンスが画面に表示されることはありません。(または、「追加」を呼び出しているにもかかわらず、最初のものが上書きされる可能性があります。)
について聞いたことListFragment
がありますが、これが機能しない場合はそれを試してみようとしています...しかし、このフラグメントの複数のインスタンスを作成できないのはなぜですか?
MainActivity.java で変更した内容は次のとおりです。(ところで:addSlotFragment
ここで2回呼び出すことは、最終的に私が望むものではありません...ボタンを押すだけで呼び出す予定です...しかし、この簡単な例を機能させることができれば、おそらく到達できると思います私の最終的な解決策。)
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addSlotFragment();
addSlotFragment();
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void addSlotFragment() {
System.out.println("adding fragment");
// add time-slot fragment
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
TimeSlotFragment fragment = new TimeSlotFragment();
fragmentTransaction.add(R.id.time_slot_container, fragment);
fragmentTransaction.commit();
}
}
... そして、デフォルトの activity_main.xml に追加した部分:
<LinearLayout
androids:id="@+id/time_slot_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
これは非常に単純な TimeSlotFragment.java です。
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class TimeSlotFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.time_slot, container, false);
}
}
...そしてtime_slot.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:singleLine="true"
android:hint="action"
>
<requestFocus />
</EditText>
<EditText
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:singleLine="true"
android:hint="time"
android:inputType="number"
/>
</LinearLayout>