Мне нужно задать 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");
Как проверить почему так происходит? Как это починить? Вроде все верно делаю.
Ответ
Достаете аргумент по ключу layout :
layout = args.getInt("layout");
Записываете аргумент по ключу key:
args.putInt("key", R.layout.activity_dialog);
Если вы записали key, то нужно и доставать key, а не layout
Комментариев нет:
Отправить комментарий