Пытаюсь передать данные по этому примеру и в результате приложение падает.
public void startTimer(View v) {
int vOtd = getIntent().getExtras().getInt("otd");
int sec = vOtd * 1000;
forTimer ft = new forTimer();
Bundle bundleMin = new Bundle();
bundleMin.putInt("sec", sec);
ft.setArguments(bundleMin);
android.app.FragmentManager fm = getFragmentManager();
fm.beginTransaction().replace(fragment3, ft).commit();
DialogFragment newFragment = new timer();
newFragment.show(getSupportFragmentManager(), "timer");
}
Принимаю во фрагменте
Bundle bundleMin = getArguments();
if (bundleMin != null) {
int rInfo = bundleMin.getInt("sec");
}
Что я делаю не так?
Создайте метод newInstance во фрагменте, в который будете передавать нужные параметры. Например, уровень прогресса для ProgressBar в окне. Не переопределяйте конструктор фрагмента
public static MyDialog newInstance(int levelProgress) {
MyDialog instance = new MyDialog();
Bundle args = new Bundle();
args.putInt(LEVEL_PROGRESS, text);
instance.setArguments(args);
return instance;
}
В onCreateView фрагмента нужно создавать View для диалога. Туда и приходит наш Bundle.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle args) {
View v = inflater.inflate(R.layout.dialog, null);
ProgressBar level = v.findViewById(R.id.dialog_level);
int levelProgress = args.getInt(LEVEL_PROGRESS);
level.setProgress(levelProgress);
return v;
}
Или, в onCreateDialog():
@Override
public Dialog onCreateDialog(Bundle args) {
AlertDialog.Builder alert = new AlertDialog.Builder(getActivity())
.setTitle("Alert")
.setMessage("Уровень: " + args.getInt(LEVEL_PROGRESS));
return alert.create();
}
LEVEL_PROGRESS это ключ для данных в Bundle. Вам нужно создать константу во фрагменте:
private static final String LEVEL_PROGRESS = "levelProgress";
Теперь можно использовать наш диалог так:
MyDialog dialog = MyDialog.newInstance(50);
dialog.show(getFragmentManager(), /*тэг*/);
Транзакция происходит внутри метода show, вам о ней думать не надо. Тэгом может быть хоть что, если не надо, киньте null.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники