0

私のアプリでギャラリーから画像選択オプションを実装しました。ギャラリーから画像を選択した後、私はそれを共有の優先順位に保ち、ユーザーはこのアクティビティに再び戻ったときにその画像を見ることができます。今私は別のアクティビティでそのイメージを使用したいと思います。しかし、私はどのように私はそのフラッグのクラスから主な活動にそのイメージを渡すことができないのか分かりません。画像を共有アクティビティから別のアクティビティに変更します。

ここでは画像チューザーのコードを示し、共有優先度にしておきます。

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(本)で行われている同じことを試してみてください。文字列mImageUri = preferences.getString( "image"、null); '@ tamrezh21 – UltimateDevil

+0

他のアクティビティに画像を渡す必要はありません.SpacePreferenceから画像を取得するのと同じことをします。 – RajatN

+0

@VikasTiwariメインオプションでコードを編集しましたが、まだ画像が表示されませんでした。 – tamrezh21

答えて

1

あなたは好みでそれを保存しているので、あなたがアクセスできるsharedprefenaceを使用して、その画像を見たいもう一つの活動です上記のコメントに記載されているようにprefsを介して。ヴィカス-Tiwariさん

+0

コードを編集しましたが、MainOptionPageの更新画像は表示されません – tamrezh21

+0

イメージを更新する方法が必要なためです。あなたのフラグメント内で 'loadNavHeader()'メソッドをpublicにして、あなたのgetActivity()を以下のようなメインアクティビティにキャストします: 'if(getActivity()instanceof MainAcitivty){((MainAcitivity)getActivity())。loadNavHeaderこれはフラグメント内で変更されたときにアクティビティ内のイメージを更新します。新しい画像のURIを保存した後に追加することを忘れないでください。 – MadScientist

+1

ありがとうございます。それは仕事です、私は質問を更新します。 – tamrezh21

0

@

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

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

クレジットあなたがイメージにアクセスするために共用することができ、すでに示唆したように。
私があなたに与えるアドバイスは、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); 
    } 
} 
関連する問題