#android #cardview
#Android #cardview
Вопрос:
Я очень новичок в Android, и я пытаюсь создать CardView программно, я использую Fragment. Установив OnClick
кнопку on, я могу создавать карточки в своем макете. Проблема в том, что после закрытия карточки действий не отображаются.
Как я могу сохранить карты, чтобы после закрытия activity карты должны быть там?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActivity().setTitle("Okhlee");
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.hawker_jobs_fragment_layout, container, false);
context = getContext();
button = (Button) view.findViewById(R.id.hawker_job_add_card_view_button);
button.setOnClickListener(this);
relativeLayout = (RelativeLayout) view.findViewById(R.id.hawker_job_relative_layout);
return view;
}
@Override
public void onClick(View v) {
createCardView();
}
/*Adding cardview programmatically function */
private void createCardView() {
CardView addedCardView = new CardView(context);
layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, height);
addedCardView.setLayoutParams(layoutParams);
addedCardView.setPadding(10 ,10, 10, 10);
addedCardView.setRadius(15);
addedCardView.setCardBackgroundColor(Color.BLUE);
addedCardView.setMaxCardElevation(30);
addedCardView.setMaxCardElevation(6);
relativeLayout.addView(addedCardView);
}
Извините за мой плохой английский.
Комментарии:
1. что вы имеете в виду
after closing the activity
?2. после закрытия приложения, когда я снова открываю приложение, мне снова нужно добавить.
3. Это ожидаемое поведение для приложения Android. Каждый раз, когда приложение уничтожается при вызове onDestroy(), весь пользовательский интерфейс будет воссоздан заново. Прочитайте больше действий
4. Я знаю это, можете ли вы помочь мне сохранить эти карты, поэтому после закрытия это не должно уничтожаться.
5. вы можете использовать SharedPreferences, такие как @tofira answer .
Ответ №1:
Вы можете использовать SharedPreferences, чтобы узнать, следует ли отображать карту.
Вот пример кода, использующего ваш оригинальный —
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.hawker_jobs_fragment_layout, container, false);
context = getContext();
button = (Button) view.findViewById(R.id.hawker_job_add_card_view_button);
button.setOnClickListener(this);
relativeLayout = (RelativeLayout) view.findViewById(R.id.hawker_job_relative_layout);
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
boolean shouldDisplayCard = sharedPref.getBoolean("should_display_card", false);
if(shouldDisplayCard)
createCardView();
return view;
}
@Override
public void onClick(View v) {
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("should_display_card", true);
editor.apply();
createCardView();
}
Комментарии:
1. Спасибо за это усилие @tofira, но, похоже, не работает то же самое, что и после закрытия, карточки активности не отображаются.
2. Можете ли вы быть более конкретным? Я только что попробовал этот код и внутри фрагмента, и, похоже, он работает.
3. Мне очень жаль, что ваш код работает как шарм, я забыл использовать
shouldDisplayCard