2013-08-29 4 views
0

Я создал новый класс, который расширяет класс DialogFragment:Android показывает диалог активности

public class SaveDataDialog extends DialogFragment { 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     // Get the layout inflater 
     LayoutInflater inflater = getActivity().getLayoutInflater(); 

     // Inflate and set the layout for the dialog 
     // Pass null as the parent view because its going in the dialog layout 
     builder.setView(inflater.inflate(R.layout.save_data_dialog, null)) 
     // Add action buttons 
       .setPositiveButton(R.string.save_data, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int id) { 
         Toast.makeText(getActivity(), "Testing positive button", Toast.LENGTH_LONG).show(); 
        } 
       }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         SaveDataDialog.this.getDialog().cancel(); 
        } 
       }); 
     return builder.create(); 
    } 

} 

И где-то в моей основной деятельности (внутри кнопки OnClick), я хочу показать этот диалог. Поэтому я пробовал:

SaveDataDialog sdd = new SaveDataDialog(); 
sdd.getDialog().show(); 

Вторая строка дает исключение из нулевого указателя.

Как мне показать диалог? Это все, что я хочу сделать.

+0

do 'sdd.show()'. Вам не нужно делать 'sdd.getDialog(). Show()' – Varun

ответ

1

Ваш SaveDataDialog распространяется на DialogFragment , вы можете позвонить sdd.show(), чтобы отобразить DialogFragment.

+0

Я попытался: 'sdd.show (getFragmentManager(),« SaveDataDialog »);' который имеет ошибку: 'Показать метод (FragmentManager, String) в тип DialogFragment не применим для аргументов (FragmentManager, String) ' – JDS

+0

, если вы используете библиотеку поддержки, а затем используйте' getSupportFragmentManager() 'вместо' getFragmentManager() ' – Varun

1

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

SaveDataDialog saveDataDialog = new SaveDataDialog(); 
saveDataDialog.show(getFragmentManager(), SaveDataDialog.class.getName()); 

http://developer.android.com/reference/android/app/DialogFragment.html#show(android.app.FragmentTransaction, java.lang.String)

Если ваше приложение поддерживает Android версии до 3.0.x. Вам нужно будет использовать библиотеку поддержки и импортировать файл android.app.v4.DialogFragment.

http://developer.android.com/tools/support-library/index.html

0

Эта ссылка очень полезно для меня надеюсь, это поможет вам тоже. Адрес a link!

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