2015-11-15 5 views
1

Итак, я создал диалоговое окно с предупреждением о множественном выборе. Проблема в том, что я не могу ее отобразить. Я хочу отобразить его, когда пользователь нажимает кнопку в другой операции. Вот код.Невозможно отобразить диалоговое окно предупреждения при нажатии кнопки Android

public class FlourishPickerDialog extends DialogFragment { 
    public ArrayList<String> flourishSet = new ArrayList<>(); 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final ArrayList mSelectedItems = new ArrayList(); 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setTitle(R.string.flourish_picker_text) 
       .setMultiChoiceItems(R.array.dealersGripFlourishArr, null, new DialogInterface.OnMultiChoiceClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
         if (isChecked) { 
          mSelectedItems.add(which); 
         } else if (mSelectedItems.contains(which)) { 
          mSelectedItems.remove(Integer.valueOf(which)); 
         } 
        } 
       }) 

       .setPositiveButton(R.string.create, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int id) { 
         flourishSet = mSelectedItems; 
        } 
       }) 

       .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 

        } 
       }); 
     builder.create(); 
     return builder.show(); 
    } 

} 

Так как я могу это сделать? Я попытался создать метод в действии и называть его кнопкой onClick, но я не мог. Заранее спасибо. EDIT:

Я также попытался ввести builder.show(); перед builder.create(); и наоборот. Вот как я пытаюсь его отобразить. Это метод в activity.java файла xml с кнопкой onClick.

public void showFlourishPicker() { 
    DialogFragment alert = new FlourishPickerDialog(); 
    alert.show(getFragmentManager(), "flourishes"); 
} 

EDIT 2:

Вот XML OnClick

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="New Button" 
    android:id="@+id/button" 
    android:onClick="showFlourishPicker" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="86dp" /> 
+0

Что выдаваемая ошибка –

+0

При компиляции ошибок нет. Когда я нажимаю кнопку, это говорит, что приложение перестало работать. – Codearts

+0

Отправьте код, в котором вы фактически обрабатываете событие нажатия кнопки + Ваша трассировка стека –

ответ

1

Я протестировал вашу проблему, и я получил решение, следуя этим шагам.

На вашем MainActivity импорта это:

import android.support.v4.app.DialogFragment; 

сделать свой вызов следующим образом:

public void showFlourishPicker (View v){ 
    DialogFragment alert = new FlourishPickerDialog(); 
    alert.show(getSupportFragmentManager(), "flourishes"); 
} 

И в ваших FlourishPicker Добавить этот импорт:

import android.support.v4.app.DialogFragment; 
import android.support.v7.app.AlertDialog; 
+0

метод 'show' является полиморфным. –

+0

Я пробовал это да. Не печально. – Codearts

+0

@Codearts Вы поете AppCompatActivity, Fragment, FragmentActivity ...? Что вы используете? –

1

Удалить шоу код из вашего диалога и поместить его в вызывающей деятельности. И в методе onCreateDialog (Bundle savedInstanceState) return builder.create();

onCreateDialog должен возвращать Dialog, но show() возвращает void.

+0

builder.show() возвращает alertDialog. Это в основном то же самое, за исключением видимой части диалога. –

+0

@JDev этого не знал, попробует. – noev

Смежные вопросы