اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته

عندي صوره تنعرض في imageview احصل عليها من اكتفتي ثاني من خلال send intent and getintent

احاول حفظ هذا الصوره في الاستوديو ولكن عند الضغط علي زر الحفظ يحدث لي كراش في التطبيق والمشكله كالتالي:  

 

java.lang.NullPointerException
        at android.graphics.Bitmap.compress(Bitmap.java:1630)
        at com.example.myapplication.FullScreenImageActivity$1.onClick(FullScreenImageActivity.java:57)
        at android.view.View.performClick(View.java:7352)
        at android.widget.TextView.performClick(TextView.java:14230)
        at android.view.View.performClickInternal(View.java:7318)
        at android.view.View.access$3200(View.java:846)
        at android.view.View$PerformClick.run(View.java:27800)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7050)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)

 

 

كود الصفحة كامل مع زر الحفظ :

 

public class FullScreenImageActivity extends AppCompatActivity {
ImageView fullImage;
OutputStream outputStream;
Button SaveImage;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_transition_to);
        fullImage=(ImageView)findViewById(R.id.iv_photo);
        Intent intent = getIntent();
        String url=intent.getStringExtra("url");
       Picasso.get().load(url).into(fullImage);
        SaveImage=(Button)findViewById(R.id.SaveImage);
        SaveImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {



              BitmapDrawable drawable =(BitmapDrawable)fullImage.getDrawable();
              Bitmap bitmap=drawable.getBitmap();

                File filepath = Environment.getExternalStorageDirectory();
                File dir =new File(filepath.getAbsolutePath()+"/Demo/");
                dir.mkdir();
                File file = new File(dir,System.currentTimeMillis()+".jpg");
                try {
                    outputStream =new FileOutputStream(file);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }

                bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputStream);
                Toast.makeText(FullScreenImageActivity.this, "Image Save", Toast.LENGTH_SHORT).show();
                try {
                    outputStream.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }




            }


        });
    }

}

 

ياليت اذا احد يعرف حل للمشكله يساعدنا ولكم كل الشكر 

Recommended Posts

  • 0
نشر

 السبب قي الخطأ الذي يظهر لك " null pointer exception " هو أن bitmap لها القيمة null أي أنها فارغة ليس لها قيمة 

فالبتالي إستخدامها في السطر التالي:

  bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputStream);

 سيسبب مشكلة و لن  يعمل لأنك تقوم باستخدام شيء غير موجود بالنسبة للبرنامج.

يمكنك استخدام الكود التالي لحل هذه المشكلة.


 // يمكنك إستبدال هذا السطر
Bitmap bitmap=drawable.getBitmap();

// بالسطر التالي

bitmap = ((BitmapDrawable) imgPreview.getDrawable()).getBitmap();

مع استخدام 

 private Bitmap bitmap;

في بداية ال class

 

  • 0
نشر
بتاريخ منذ ساعة مضت قال Yomna Raouf:

 السبب قي الخطأ الذي يظهر لك " null pointer exception " هو أن bitmap لها القيمة null أي أنها فارغة ليس لها قيمة 

فالبتالي إستخدامها في السطر التالي:


  bitmap.compress(Bitmap.CompressFormat.JPEG,100,outputStream);

 سيسبب مشكلة و لن  يعمل لأنك تقوم باستخدام شيء غير موجود بالنسبة للبرنامج.

يمكنك استخدام الكود التالي لحل هذه المشكلة.



 // يمكنك إستبدال هذا السطر
Bitmap bitmap=drawable.getBitmap();

// بالسطر التالي

bitmap = ((BitmapDrawable) imgPreview.getDrawable()).getBitmap();

مع استخدام 


 private Bitmap bitmap;

في بداية ال class

 

اهلا بك @Yomna Raoufقمت بتطبيق ما تم ذكره واستبطل السطر ب سطر المرفق + التعريف في بداية الكلاس ولكن المشكلة لم تحل ما زالت نفس المشكلة مستمره مع ظهور نفس الخطاء

  • 0
نشر
بتاريخ 52 دقائق مضت قال Yomna Raouf:

يمكنك الحصول على bitmap من أي imageview بهذه الطريقة


// في الكود الذي أرفقته fullImage   بدلًا من  imageView قم بكتابة 

BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); 
Bitmap bitmap = drawable.getBitmap();

لا اعلم لماذا لم ينجح لدي قمت بالفعل ب استخدام هذا الكود حسب ما ذكر في اول تعليق

  • 0
نشر
بتاريخ 4 ساعات قال Yomna Raouf:

لكنك قمت بكتابة fullimage بدلًا من imageView في هذا السطر


BitmapDrawable drawable =(BitmapDrawable)fullImage.getDrawable();  // 🚫

BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();  // ✔✔

 

نعم هذا يكون موقع Id image قمت بتغيره ولكن بدون فائده منذ البدايه

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...