0

내 응용 프로그램의 갤러리에서 이미지 선택기 옵션을 구현했습니다. 갤러리에서 사진을 찍은 후 카메라에서 사진을 찍은 후 다시 공유 할 때이 이미지를 볼 수 있도록 공유 우선 순위로 유지합니다. 이제 다른 활동에서 그 이미지를 사용하고 싶습니다. 그러나 나는 어떻게 그 imagr를 저 주요 클래스에서 주요 활동으로 넘어갈 수 있을지 모른다.한 액티비티에서 다른 액티비티로 공유 우선권을 통해 이미지 변경

여기 이미지 선택기에 대한 코드이며 공유 우선 순위로 유지하십시오.

public class ViewProfileFragment extends Fragment implements View.OnClickListener{ 


    private ImageView image; 

    private int REQUEST_CAMERA = 0, SELECT_FILE = 1; 

    String userChoosenTask; 
    Bitmap bm; 
    String currentPhotoPath; 
    Uri uri; 

    private String UPLOAD_URL = Constants.HTTP.PHOTO_URL; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View rootView = inflater.inflate(R.layout.fragment_view_profile, container, false); 


     image=(ImageView)rootView.findViewById(R.id.profile_pic); 
     saveData(); 
     return rootView; 
    } 
    public void saveData(){ 
     ..... 
     if (results.size() > 0) { 
      ...... 

      SharedPreferences preferences = 
        PreferenceManager.getDefaultSharedPreferences(getActivity()); 
      String mImageUri = preferences.getString("image", null); 
      if (mImageUri != null) { 
       image.setImageURI(Uri.parse(mImageUri)); 
       System.out.println("imageuri"+Uri.parse(mImageUri)); 
      } else { 
       Glide.with(this) 
         .load(Constants.HTTP.PHOTO_URL+mail) 
         .thumbnail(0.5f) 
         .override(200,200) 
         .diskCacheStrategy(DiskCacheStrategy.ALL) 
         .into(image); 

       System.out.println(Constants.HTTP.PHOTO_URL+mail); 
      } 

    } 


    private void galleryAddPic() { 
     Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
     File f = new File(currentPhotoPath); 
     uri = Uri.fromFile(f); 
     mediaScanIntent.setData(uri); 
     this.getActivity().sendBroadcast(mediaScanIntent); 

     SharedPreferences preferences = 
       PreferenceManager.getDefaultSharedPreferences(getActivity()); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putString("image", String.valueOf(uri)); 
     editor.commit(); 

     try { 
      Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri); 
      image.setImageBitmap(bitmap); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    private void onCaptureImageResult() { 
     Bitmap bitmap = getBitmapFromPath(currentPhotoPath, 200, 200); 
     image.setImageBitmap(bitmap); 
     compressBitMap(bitmap); 
    } 

    private void onSelectFromGalleryResult(Intent data) { 
     uri = data.getData(); 
     String[] projection = {MediaStore.Images.Media.DATA}; 
     Cursor cursor = getContext().getContentResolver().query(uri, projection, null, null, null); 
     if (cursor != null) { 
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      currentPhotoPath = cursor.getString(column_index); 
      uri = Uri.fromFile(new File(currentPhotoPath)); 
      cursor.close(); 
     } else { 
      currentPhotoPath = uri.getPath(); 
     } 

     SharedPreferences preferences = 
       PreferenceManager.getDefaultSharedPreferences(getActivity()); 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putString("image", String.valueOf(uri)); 
     editor.commit(); 

     try { 
      Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri); 
      image.setImageBitmap(bitmap); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     bm = BitmapFactory.decodeFile(currentPhotoPath); 
     compressBitMap(bm); 
    } 
} 

그리고 이것은 내가

편집 코드

public class MainOptionPage extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{ 


    private ImageView imgProfile; 
    RealmResults<MyColleagueModel> results; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     .... 
     // Navigation view header 

     Intent intent = getIntent(); 
     navigationHeader= navigationView.getHeaderView(0); 
     .... 
     imgProfile = navigationHeader.findViewById(R.id.profile_image); 

     // load nav menu header data 
     loadNavHeader(); 

     //setupDrawerContent(navigationView); 

     navigationView.setNavigationItemSelectedListener(this); 
    } 

    private void loadNavHeader() { 

     GlobalClass globalClass = new GlobalClass(); 
     String mEmail = globalClass.getEmail_info(); 

     Realm profileRealm; 
     profileRealm = Realm.getDefaultInstance(); 

     results = profileRealm.where(MyColleagueModel.class).equalTo("mail", mEmail).findAll(); 

     //fetching the data 
     results.load(); 

     // name, website 
     String name=null; 
     String profile_image; 
     byte[] profile_byte = new byte[0]; 

     // if(globalClass.readDatafromStorage().contains("ACTIVATE")) { 
      name = " "; 
      if (results.size() > 0) { 
       name = results.get(0).getName().toString(); 
      } 
      profile_image = globalClass.getImage_urlpath(); 


      profile_image = globalClass.getImage_urlpath(); 
     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
     String mImageUri = preferences.getString("image", null); 
     if (mImageUri != null) { 
      imgProfile.setImageURI(Uri.parse(mImageUri)); 

     System.out.println("imageuri"+Uri.parse(mImageUri)); 
     } else { 
      Glide.with(this).load(profile_image) 
        .thumbnail(0.5f) 
        .override(200, 200) 
        .diskCacheStrategy(DiskCacheStrategy.ALL) 
        .into(imgProfile); 
      Log.d("--LoginPage_NAME--", name); 
     } 

     txtName.setText(name); 
     txtWebsite.setText(mEmail); 


     Glide.with(this).load(profile_image) 
       .thumbnail(0.5f) 
       .override(200,200) 
       .diskCacheStrategy(DiskCacheStrategy.ALL) 
       .into(imgProfile); 

     // TODO: 11/9/17 set bitmap in imageview by removing below comment 

    } 
+3

가 (이) ViewProfileFragment 활동'된 SharedPreferences 환경 설정 = PreferenceManager.getDefaultSharedPreferences에서 수행 한의 같은 시도; String mImageUri = preferences.getString ("image", null); @ tamrezh21 – UltimateDevil

+0

다른 액티비티로 이미지를 전달할 필요가 없습니다. SharedPreference에서 이미지를 가져 오는 것과 같은 작업을 수행하십시오. – RajatN

+0

@VikasTiwari 주 옵션에서 코드를 편집했지만 아직 어떤 그림도 얻지 못했습니다. – tamrezh21

답변

1

당신이 환경 설정에 저장하고 있기 때문에, 당신은에 액세스 할 수 있습니다 sharedprefenace을 사용하여 해당 이미지를보고 싶어 또 다른 활동입니다 위의 설명에서 언급 한대로 설정을 통해. 이미 제안으로

SharedPreferences preferences = preferenceManager.getDefaultSharedPreferences(this); 
String mImageUri = preferences.getString("image", null); 

if (mImageUri!=null){ 
    // load image 
} 

크레딧 카스 - Tiwari 보낸

+0

코드를 편집했지만 MainOptionPage에서 업데이트 된 이미지가 보이지 않습니다. – tamrezh21

+0

이미지를 새로 고침해야하기 때문에. 당신의 조각 안의'loadNavHeader()'메서드를 public으로 만들고, getActivity()를 다음과 같은 주된 동작에 캐스트하십시오 : 'if (getActivity() instanceof MainAcitivty) {((MainAcitivity) getActivity()). loadNavHeader '을 사용하면 조각에서 변경 될 때 활동의 이미지를 업데이트합니다. prefs에 새 이미지의 URI를 저장 한 후에 추가하는 것을 잊지 마십시오. – MadScientist

+1

답장을 보내 주셔서 감사합니다. 그것은 workinng, 나는 질문을 업데이 트됩니다. – tamrezh21

0

@, 당신은 이미지에 액세스 할 수 공유 할 수 있습니다.
내가 제공하는 조언은 sharedpreferences를 만들고 언제든지 인스턴스를 검색 할 수있는 단일 클래스를 만드는 것입니다.
예 :

public class MySharedPreferences { 

    private static MySharedPreferences mInstance; 
    private static Context mCtx; 

    private MySharedPreferences(Context context) { 
     mCtx = context; 
    } 

    public static synchronized MySharedPreferences getInstance(Context context) { 
     if (mInstance == null) { 
      mInstance = new MySharedPreferences(context); 
     } 
     return mInstance; 
    } 


    public boolean saveData(String data1, String data2) { 
     SharedPreferences sharedPreferences = mCtx.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putString(KEY1, data1); 
     editor.putString(KEY2, data2); 
     return editor.commit(); 
    } 

public String getData1() { 
     SharedPreferences sharedPreferences = mCtx.getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); 
     return sharedPreferences.getString(KEY1, null); 
    } 
}