#java #android
Мне нужно задать DialogFragment стиль, для этого я ему присвоил layout параметр. Идея такая, я могу вызывать этот DialogFragment из разных классов, передавая ему нужный мне layout. Так как в зависимости от вызывающего класса DialogFragment должен иметь соответствующий вид. Я делаю это так, вот собственно класс DialogFragment public class MyDialog extends DialogFragment { final String LOG_TAG = "MyDialog"; int layout; // Здесь я принимаю входящие аргументы @Override public void onCreate(Bundle savedState) { super.onCreate(savedState); Bundle args = this.getArguments(); layout = args.getInt("layout"); } public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder adb = new AlertDialog.Builder(getActivity()) .setView(layout) .setCancelable(true); return adb.create(); } public void dismissDialog(final MyDialog dialog, int daleyTime) { Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { try { dialog.dismiss(); } catch (IllegalStateException e) { e.printStackTrace(); } } }, daleyTime); } public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); Log.d(LOG_TAG, "MyDialog: onDismiss"); } public void onCancel(DialogInterface dialog) { super.onCancel(dialog); Log.d(LOG_TAG, "MyDialog: onCancel"); } } И вот как я передаю аргументы : int daleyTimeFirst = 8 * 1000; MyDialog dialog = new MyDialog(); Bundle args = new Bundle(); args.putInt("key", R.layout.activity_dialog); dialog .setArguments(args); dialog.show(getFragmentManager(), "dialog"); dialog.dismissDialog(dialog, daleyTimeFirst); Когда я в классе MyDialog явно указываю какой layout использовать, то все работает, как только я передаю layout как аргумент, то ничего не происходит, в логе печатает только строчку Log.d(LOG_TAG, "MyDialog: onDismiss"); Как проверить почему так происходит? Как это починить? Вроде все верно делаю.
Ответы
Ответ 1
Достаете аргумент по ключу layout : layout = args.getInt("layout"); Записываете аргумент по ключу key: args.putInt("key", R.layout.activity_dialog); Если вы записали key, то нужно и доставать key, а не layout
Комментариев нет:
Отправить комментарий