2016-01-06 3 views
0

Открывается диалоговое окно оповещения при нажатии на TextView. Затем, если пользователь выбирает любое значение, цвет макета должен измениться иначе. Это работает нормально. Но когда я закрываю и снова открываю вкладку, цвет не сохраняется. Как сохранить цвет даже после того, как приложение снова откроется.Изменение цвета макета не сохраняется при открытии приложения

XML:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#FFFFFF" 
    android:orientation="horizontal" 
    android:id="@+id/linearLayout1" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/genere"/> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/genere" 
    android:layout_gravity="center" 
    android:text=" Search Genre" 
    android:textSize="20sp"/> 

</LinearLayout> 

OnClick:

Views mViews = new Views(); 
mViews.genere.setOnClickListener(this); 
    public void onClick(View v) { 
switch (v.getId()){ 
    case R.id.genere: 
     ilist(); 
     break; 

Java:

public ArrayList<String> ilist() { 

    final String[] ratings = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; 
    final boolean[] ratingschecked = {false, false, false, false, false, false, false, false, false, false}; 
    SharedPreferences sharedPreferences = this.getSharedPreferences("checkedrate_i", Context.MODE_PRIVATE); 
    final SharedPreferences.Editor editor = sharedPreferences.edit(); 

    final AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    builder.setTitle("Select Ratings"); 
    builder.setMultiChoiceItems(ratings, ratingschecked, new DialogInterface.OnMultiChoiceClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which, boolean isChecked) { 

      if (isChecked) { 

        if(!ilist.contains(ratings[which])){ 
         ilist.add(ratings[which]); 

        } 

      } else if (ilist.remove(ratings[which])) { 

       if(ilist.contains(ratings[which])){ 
        ilist.remove(ratings[which]); 
       } 


      } 
     } 
    }).setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

       for (int i = 0; i < ilist.size(); i++) { 
       editor.putString("selectedratings" + i, String.valueOf(ilist.get(i))); 
      } 
      editor.putInt("size", ilist.size()); 

      editor.apply(); 



> if(!(ilist.isempty)){ 
>    //change gray color 
>    } 
>   else{ 
>    //Change white color. 
>    } 

     } 
    }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 

     } 
    }); 

    AlertDialog dialog = builder.create(); 
    builder.show(); 
    return ilist; 
    } 

Как сохранить изменение цвета, сделанное в методе списка, даже когда приложение вновь.

+0

Если вы хотите сохранить состояние события события цвета, оно снова открывается, тогда вы должны сохранить цвет в SharedPreference или DB. потому что эта память сохраняется до тех пор, пока вы не очистите данные об удалении приложения. – Avi

ответ

1

Сохраните выбранный цвет в SharedPreferences, а затем извлеките его при создании диалогового окна. Или просто проверьте size, который вы сохранили в SharedPreferences, если он больше 0, тогда выбранное пользователем значение и цвет должны измениться в противном случае.

+0

Спасибо за предложение. Я пробовал, и это сработало. – user2269164

Смежные вопросы