2016-12-21 4 views
-1

Я пытаюсь загрузить изображение, если пользователь загрузил изображение ранее. Я пытаюсь сделать это в OnCreateСохранение диалоговFragment Рисованное изображение в Сохраненные настройки

Используется DialogFragment для достижения этой цели, так как я хочу, чтобы выбрать изображение из в приложение только.

Вот мой WithNamesFragment Класс:

public class WithNamesFragment extends DialogFragment { 
    final static ArrayList<HashMap<String, ?>> imagesWithNames = new ArrayList<>(); 

    static { 
     HashMap<String, Object> row = new HashMap<>(); 
     row.put("imageID", R.drawable.aquarius); 
     row.put("name", "Aquarius"); 
     imagesWithNames.add(row); 
     row = new HashMap<>(); 
     row.put("imageID", R.drawable.virgo); 
     row.put("name", "Virgo"); 
     imagesWithNames.add(row); 

    } 

    @NonNull 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final SimpleAdapter adapter = new SimpleAdapter(getContext(), imagesWithNames, R.layout.lib_dialog_image, 
       new String[]{"name", "imageID"}, new int[]{R.id.text1, R.id.image1}); 
     return new AlertDialog.Builder(getContext()).setAdapter(adapter, 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         ((MainActivity) getContext()).OnSelected(WithNamesFragment.this.getClass(), (int) ((HashMap<String, Object>) adapter.getItem(i)).get("imageID")); 
        } 
       }).setCancelable(true).setTitle("PICK YOUR AVATAR").create(); 
    } 
} 

в MainActivity:

public void OnSelected(Class<?> clazz, int i) { 
     Toast toast = Toast.makeText(this, "Image Selected", Toast.LENGTH_SHORT); 
     //Toast toast = Toast.makeText(this, "Class \"" + clazz.getSimpleName() + "\" returns this image with id: " + getResources().getResourceName(i), Toast.LENGTH_SHORT); 
     final TextView toastView = (TextView) toast.getView().findViewById(android.R.id.message); 
     toastView.setCompoundDrawablesWithIntrinsicBounds(0, i, 0, 0); 
     toast.show(); 
     Glide.with(this).load(i) 
       .crossFade() 
       .thumbnail(0.5f) 
       .bitmapTransform(new CircleTransform(this)) 
       .diskCacheStrategy(DiskCacheStrategy.ALL) 
       .into(profimg); 
     sp.edit().remove("dp").apply(); 
     i=this.i; 
     sp.edit().putInt("dp",i); 
    } 
    void show() { 
     new WithNamesFragment().show(getSupportFragmentManager(), PICKER_TAG); 
    } 

в OnCreate из MainActivity:

profimg.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       show(); 
      } 
     }); 

boolean path =sp.contains("dp"); 

if(path) { 
      int value=sp.getInt("dp",i); 
      Toast.makeText(MainActivity.this, value, Toast.LENGTH_SHORT).show(); 
      /*Glide.with(this).load(value) 
        .crossFade() 
        .thumbnail(0.5f) 
        .bitmapTransform(new CircleTransform(this)) 
        .diskCacheStrategy(DiskCacheStrategy.ALL) 
        .into(profimg);*/ 
     } 

Это шоу метод:

void show() { 
     new WithNamesFragment().show(getSupportFragmentManager(), PICKER_TAG); 
    } 

Раньше я боролся с ошибкой Casting, но теперь я не подвожу ничего в Toast.

+0

В какой строке возникает проблема? –

+0

@ ρяσѕρєяK Подождите. Хорошо. Это разрешено сейчас. Но поскольку этот ресурс я получаю в фрагменте Withnames и в onSelected, я загружаю изображение с помощью скольжения. Но смотрите в onCreate method. Я просто получаю resourceID. Ошибка: android.content.res.Resources $ NotFoundException: Идентификатор ресурса строки # 0x0 – SameerKhan1406

ответ

1

Заменить ниже линии:

sp.edit().putInt("dp",i).apply(); 

Вы пропустили .Не() или .commit() Изменить код: инициализирует SharedPreference первым.

Oncreate(){ 

     final int value = sp.getInt("dp",0); 

    if(value>0){ 
     imageView.setImageResource(value); 
    } 


} 
+0

Исключение каста снова говорит, что Java.string.lang не может быть отправлен в Integer – SameerKhan1406

+0

На какой строке возникает проблема? –

+0

Это разрешено, но я получаю это сейчас. Ошибка: android.content.res.Resources $ NotFoundException: Идентификатор ресурса строки # 0x0 – SameerKhan1406