MapFragment и страшное исключение "Duplicate id" - как использовать MapFragment в AlertDialog
Итак, у меня есть ошибка, описанная в этом посте:
Я искал SO и нашел несколько объяснений, почему я получаю эту ошибку:
- http://developer.android.com/about/versions/android-4.2.html
- MapFragment во фрагменте, альтернативы?
и так далее.
Моя проблема в том, что я не совсем понимаю, как использовать Фрагменты (да, я прочитал часть "Фрагменты" на сайтах разработчиков Android) и, в частности, как решить мою конкретную проблему.
У меня есть фрагмент под названием "BookingList". Этот BookingList имеет строки с бронированиями, и каждая строка может быть нажата. Когда я нажимаю, я показываю диалог с некоторой информацией об этом бронировании и карту. Список представляет собой ListView, а onClickListener выглядит так:
public class BookingList extends Fragment {
// ... code code code
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// ... code
// ... code
list.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
BookingLight bl = (BookingLight)bookingRowAdapter.getRow(position);
String name = bl.Customer.Firstname + " " + bl.Customer.Lastname;
Toast.makeText(getActivity(), "Öppnar " + name, Toast.LENGTH_SHORT).show();
Handler myHandler = new Handler();
myHandler.postDelayed(new Runnable()
{
@Override
public void run()
{
View detailsView = infl.inflate(R.layout.booking_details, null);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(detailsView);
builder.create().show();
}
}, 500);
}
});
Как видите, я просто раздуваю booking_details, который представляет собой простой View, содержащий MapFragment.
Во второй раз, когда я щелкаю одну из этих строк, я получаю исключение, упомянутое выше. Поскольку представление само по себе не является фрагментом (пока это просто представление), я не уверен, как избежать этого исключения.
У меня есть смутная идея использовать FragmentManager, но я точно не знаю, как именно.
Может кто-нибудь объяснить мне это возможно?