Почему OnClickListener не работает из фрагмента, используемого в качестве Alertdialog - PullRequest
0 голосов
/ 21 ноября 2018

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

Фрагмент, используемый в качестве кода алерта:

        AlertDialog.Builder mBuilder = new AlertDialog.Builder(v.getContext());
            View mview = getLayoutInflater().inflate(R.layout.fragment_add_opskrift, null);
            mBuilder.setView((mview));
            AlertDialog dialog = mBuilder.create();
            dialog.show();

Onclicklistener внутри кода фрагмента:

public class AddOpskrift extends Fragment  {

            private static  final int RESULT_LOAD_IMAGES = 1;
            TextView filepath_name;

  public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    View view = inflater.inflate(R.layout.fragment_add_opskrift, container, false);

    filepath_name = (TextView) view.findViewById((R.id.billede_path)) ;


    Button soeg_billede = (Button) view.findViewById(R.id.billede_button);
    soeg_billede.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(galleryIntent, RESULT_LOAD_IMAGES);


        }

    });

    return view;

Xaml:

<Button
        android:id="@+id/billede_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="70dp"
        android:layout_marginRight="70dp"
        android:background="@color/colorPrimary"
        android:drawableRight="@drawable/ic_add_photo_white"
        android:padding="10dp"
        android:text="Tilføj billede "
        android:textColor="@color/white" />

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Этот код:

Button soeg_billede = (Button) mview.findViewById(R.id.billede_button);
soeg_billede.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(galleryIntent, RESULT_LOAD_IMAGES);
    }
});

должен быть записан непосредственно перед отображением диалога с помощью dialog.show();.Требуемое изменение - mview вместо view для findViewById()

0 голосов
/ 21 ноября 2018

Существует разница в использовании макета фрагмента с AlertDialog и фактическом использовании DialogFragment

DialogFragment устарела, поскольку API 28.

Этот класс устарел на уровне API 28. Используйте библиотеку поддержки DialogFragment для согласованного поведения на всех устройствах и доступа к жизненному циклу.

...