Android / фрагмент внутри представления списка - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь создать представление списка фрагментов, которое обычно должно отображать фрагмент адреса доставки, но должно изменить фрагмент, если пользователь нажимает кнопку редактирования, тогда он должен показать фрагмент адреса доставки для редактирования.

IЯ использую fragmentTransaction1.replace(R.id.deliveryaddress, showAddress); с настраиваемым адаптером представления списка, чтобы показать фрагмент в представлении списка. Вышеприведенный оператор хорошо работает, когда setContentView используется внутри функции onCreate для действия и когда разметка раздувается внутри функции OnCreateView для фрагмента, но что делать, если разметка раздувается внутри функции getView для адаптера массива? Вышеупомянутое утверждение не работает хорошо тогда. Он возвращает следующее сообщение об ошибке:

E/FragmentManager: No view found for id 0x7f080064 (com.melorra.nativeapp:id/deliveryaddress) for fragment ShowAddress{7b0a85a #3 id=0x7f080064}

Пожалуйста, помогите мне исправить эту ошибку.

Profile.java

...
AddressAdapter addressAdapter = new AddressAdapter(getContext(), R.layout.fragment, addressList, getFragmentManager());
...

AddressAdapter.java

public class AddressAdapter extends ArrayAdapter<DeliveryAddress> {
    Context con;
    int _resource;
    List<DeliveryAddress> lival;
    FragmentManager fragmentManager;

    public AddressAdapter(Context context, int resource, List<DeliveryAddress> li, FragmentManager fm) {
        super(context, resource, li);
        // TODO Auto-generated constructor stub
        con = context;
        _resource = resource;
        lival = li;
        fragmentManager = fm;
    }

    @Override
    public View getView(int position, View v, ViewGroup vg) {
        View vi = null;
        LayoutInflater linflate = (LayoutInflater) con.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        vi = linflate.inflate(_resource, null);

        DeliveryAddress deliveryAddress = lival.get(position);

        ShowAddress showAddress = new ShowAddress(deliveryAddress);

        FragmentManager fragmentManager1 = fragmentManager;
        FragmentTransaction fragmentTransaction1 = fragmentManager1.beginTransaction();
        fragmentTransaction1.replace(R.id.deliveryaddress, showAddress);
        fragmentTransaction1.commit();

        return vi;
    }
}

profile.xml

...
<ListView
    android:id="@+id/addresslist"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</ListView>
...

фрагмент.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/deliveryaddress"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout>
...