Я получаю следующие отчеты об ошибках:Невозможно выполнить это действие после того, как onSaveInstanceState показать
Fatal Exception: java.lang.IllegalStateException: Не удается выполнить это действие после того, как onSaveInstanceState в android.support.v4 .app.FragmentManagerImpl.checkStateLoss (FragmentManager.java:1832) на android.support.v4.app.FragmentManagerImpl.enqueueAction (FragmentManager.java:1850) на android.support.v4.app.BackStackRecord.commitInternal (BackStackRecord.java : 643) на android.support.v4.app.BackStackRecord.commit (BackStackRecord.java:603) at android.support.v4.app.DialogFragment.show (DialogFragment.java:143)
Этот следующий код вызывает сбой, я вырезал некоторые тривиальный код установки для ясности. Я прочитал эту ошибку, и, насколько я понимаю, .show()
должен быть безопасным в рамках взаимодействия с пользователем, например onClick()
. Единственное, о чем я могу думать, это то, что query()
занимает много времени, и пользователь своп. Это разумное объяснение этой ошибки? Это мгновенно на моих устройствах даже с большой БД. Любые другие возможности? Благодаря!
foldersButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
final List<String> paths = new ArrayList<>();
try(Cursor c = getActivity().getContentResolver().query(Meta.CONTENT_URI,
new String[]{"DISTINCT " + Meta.PARENT}, null, null,
Meta.PARENT + " ASC"))
{
while (c != null && c.moveToNext())
{
String path = c.getString(c.getColumnIndex(Meta.PARENT));
// We place the excluded folders at the end
if (!mExcludedFolders.contains(path))
paths.add(path);
}
}
[setup...]
int[] position = new int[2];
foldersButton.getLocationOnScreen(position);
FolderDialog dialog = FolderDialog.newInstance(
paths.toArray(new String[paths.size()]),
visible,
excluded,
position[0],
position[1]);
dialog.setStyle(DialogFragment.STYLE_NO_TITLE, R.style.FolderDialog);
[setup...]
dialog.show(getFragmentManager(), TAG);
}
});
У вас найдено решение для этого фатального исключения. – RameshJaga