Проблема
Я видел этот вопрос, опубликованный ранее, но ответы не решили мою проблему, поэтому я предполагаю, что это может быть другая проблема.
Мой код работает хорошокогда я запускаю его, но если я оставляю активность на некоторое время и возвращаюсь к ней позже - она падает.
Активность содержит фрагмент, который сам содержит фрагмент.Сбой происходит внутри onViewCreated () в getContext().getString(R.string.vote_for)
Код
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
TextView description = rootView.findViewById(R.id.votes_chart_desc);
description.setText(getArguments().getString("voteItemDesc"));
int votesForNum = getArguments().getInt("voteFor");
int voteAgainstNum = getArguments().getInt("voteAgainst");
int voteAbstainNum = getArguments().getInt("voteAbstain");
PieChart chart = rootView.findViewById(R.id.votes_chart);
ArrayList<PieEntry> entries = new ArrayList<>();
# CRASH happens here, inside the if, when evaluating getString().
if (votesForNum > 0) entries.add(new PieEntry(votesForNum, getContext().getString(R.string.vote_for)));
if (voteAgainstNum > 0) entries.add(new PieEntry(voteAgainstNum, getContext().getString(R.string.vote_against)));
if (voteAbstainNum > 0) entries.add(new PieEntry(voteAbstainNum, getContext().getString(R.string.vote_abstain)));
PieDataSet set = new PieDataSet(entries, "");
set.setColors(ColorTemplate.MATERIAL_COLORS);
PieData data = new PieData(set);
chart.setData(data);
chart.invalidate();
}
Stacktrace
FATAL EXCEPTION: main
Process: [myprocess], PID: 11262
java.lang.RuntimeException: Unable to start activity ComponentInfo{...}: android.content.res.Resources$NotFoundException: String resource ID #0x7f0e003b
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2729)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2790)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1505)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:173)
at android.app.ActivityThread.main(ActivityThread.java:6523)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:938)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:828)
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x7f0e003b
at android.content.res.Resources.getText(Resources.java:352)
at android.content.res.Resources.getString(Resources.java:398)
at android.content.Context.getString(Context.java:476)
at [myprocess].Votes.VoteFragment.onViewCreated(VoteFragment.java:65)
...
Вещи, которые я пробовал / вопросы, которые я искал
- Этот вопрос казался похожим (ресурс существует, но ошибка) - Очистка проекта не помогла
- Это не похоже, но похоже на исключение -
getString()
получает и ID как следует, и программа работает, пока я не перехожу на другое приложение. - Не похоже на мою проблему , OP каким-то образом удалил их макет.Мой макет существует и работает до тех пор, пока вы не переключите приложения.
- Дубликат 2 , не имеет значения.
- Дубликат 2 , не имеет значения.
- Изменение строки сбоя на
rootView.getResources().getString(R.string.vote_for)
- Изменение строки сбоя на
getString(R.string.vote_for)
- Изменение строки сбоя на
getParentFragment().getActivity().getString(R.string.vote_for)
Информация об отладчике
Я поставил точку останова на проблемной строке, но отладчик отключается после того, как я переключаюсь между 9 приложениями, поэтому я не могу вернуться к аварийной строке после переключения между приложениями.Если мое понимание жизненного цикла действия правильное, сбой происходит только onStop()
, onResume()
возобновляется как обычно.
Я пытался решить эту проблему самостоятельно, но мне не удалось.У меня нет идей.Кто-нибудь еще сталкивался с чем-то подобным?Спасибо.