مشکل در Bundle (ارسال اطلاعات)

0 امتیاز
52 بازدید
سوال شده شهریور 26, 1395 توسط armin  
با سلام و خسته نباشید مجدد فرض کنید 2تا اکتویتی وجود داره یکی خالیه یکی داخلش ایمیج ویو تعریف شده و عکسی از پوشه درابل بش اختصاص داده شده و یک دکمه هم زیر این ایمیج ویو وجود داره من میخوام وقتی رو دکمه کلیک شد عین همین ایمیج ویو با همون عکسی که بش اختصاص دادم تو اکتویتی دیگه ساخته بشه (خیلی شبیه به لیست علاقه مندی میشه اما میخوام یکارای دیگه هم روش انجام بدم ) پ.ن : چن روز توسط آموزشا فکر کردم تا این کار رو انجام بدم ولی همش بم ایراد میگیره سپاس.
این مطلب را به اشتراک بگذارید

1 پاسخ

+1 امتیاز
پاسخ داده شده شهریور 26, 1395 توسط sajjadfcb  
انتخاب شده شهریور 26, 1395 توسط armin
 
بهترین پاسخ
سلام . شما میخوای به محض اینکه روی دکمه کلیک شد بره و اون عکس رو تو اکتیویتی دیگه نشون بده.یا اینکه وقتی کلیک کردید تو همون صفحه بمونید واین عکس به صفحه بعد اضافه بشه؟
دارای دیدگاه شهریور 26, 1395 توسط armin  
نه فقط بره به اونجا اضافه بشه اون اکتویتی باز نکنه
دارای دیدگاه شهریور 26, 1395 توسط sajjadfcb  

ابتدا ما دو تا اکتیویتی داریم،تو اکتیویتی اول یدونه ایمیج ویو با دو تا باتن قرار میدیم و تو اکتیویتی دوم یدونه ایمیج ویو.

حالا تو اکتیویتی اول کد های زیر رو مینویسیم

public class MainActivity extends Activity {
    Button btn1, btn2;
    Boolean image;
    ImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);

        imageView= (ImageView) findViewById(R.id.imageView);
        btn1 = (Button) findViewById(R.id.btn1);
        btn2 = (Button) findViewById(R.id.btn2);
        
        imageView.setImageResource(R.drawable.image);


        final SharedPreferences share = getSharedPreferences("image", MODE_PRIVATE);
        image = share.getBoolean("img", false);


        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (image) {
                    image = false;
                    SharedPreferences.Editor editor = share.edit();
                    editor.putBoolean("img", false);
                    editor.apply();
                    Toast.makeText(getApplicationContext(), "از علاقه ها حذف شد", Toast.LENGTH_SHORT).show();

                } else {
                    image = true;
                    SharedPreferences.Editor editor = share.edit();
                    editor.putBoolean("img", true);
                    editor.apply();
                    Toast.makeText(getApplicationContext(), "به علاقه ها اضافه شد", Toast.LENGTH_SHORT).show();

                }

            }
        });
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(),SecoundActivity.class);
                startActivity(intent);
            }
        });

    }

}

تو این کد یدونه Sharedprefrences تعریف کردیم و گفتیم اگه روی باتن 1 کلیک شد مقدار بولین Sharedprefrences رو به true تغییر بده و اگه دوباره کلیک شد به false تغییر بده حالا با کلیک روی باتن2 به اکتیویتی دوم میریم .کدهاش به صورت زیره

public class SecoundActivity extends Activity {

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

        ImageView imageView= (ImageView) findViewById(R.id.imageView2);
        
        final SharedPreferences share=getSharedPreferences("image",MODE_PRIVATE);
        Boolean image=share.getBoolean("img",false);

        if (image==true){
            imageView.setImageResource(R.drawable.image);
        }
    }
}

تو این اکتیوتی گفتیم اگه مقدار بولین image برابر true بود بیا عکس رو ست بکن اگر هم که false باشه دیگه هیچی نشون نمیده.

تمام.

سوالی بود در خدمتم 

موفق باشید.

دارای دیدگاه شهریور 27, 1395 توسط armin  
عالی بود ممنون مشکلم حل شد، خیلی آقایی سپاس.
دارای دیدگاه شهریور 27, 1395 توسط sajjadfcb  
خواهش می کنم
دارای دیدگاه مهر 12, 1395 توسط armin  
سلام ببخشید دوباره مزاحم میشم یه مشکل دیگه ای که من دارم اینه که این عکسی که من میخوام استفاده کنم تو اون ایمیج ویو حجمش بالاس در حد 3 4 مگ که باعث لگ زدن برنامه یا حتی فورس کلوز میشه چطوری میتونم این مشکل حل کنم البته بدون کم کردن حجم عکس.
دارای دیدگاه مهر 14, 1395 توسط sajjadfcb  

سلام من پیشنهاد می کنم اول حجم عکسو با نرم افزار های کم کردن حجم عکس کم کنید و بعد درون پوشه drawable قرار بدید چون در این صورت حجم برنامتون زیاد نمیشه ولی اگه میخواین عکس رو همونجوری اضافه کنید روش هایی وجود داره که میتونید به کمک اونها حجم عکس رو کم کنید من خودم برای امتحان یک عکس 20 مگابایتی رو  تونستم به کمک این روش نشون بدم و برنامه بسنه نشه.در ضمن این روش رو خود گوگل پیشنهاد میکنه و روش استانداردیه.

اول باید این دو متد رو به برنامتون اضافه کنید.

public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
                                                     int reqWidth, int reqHeight) {

    // First decode with inJustDecodeBounds=true to check dimensions
    final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeResource(res, resId, options);

    // Calculate inSampleSize
    options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

    // Decode bitmap with inSampleSize set
    options.inJustDecodeBounds = false;
    return BitmapFactory.decodeResource(res, resId, options);
}
public static int calculateInSampleSize(
        BitmapFactory.Options options, int reqWidth, int reqHeight) {
    // Raw height and width of image
    final int height = options.outHeight;
    final int width = options.outWidth;
    int inSampleSize = 1;

    if (height > reqHeight || width > reqWidth) {

        final int halfHeight = height / 2;
        final int halfWidth = width / 2;

        // Calculate the largest inSampleSize value that is a power of 2 and keeps both
        // height and width larger than the requested height and width.
        while ((halfHeight / inSampleSize) >= reqHeight
                && (halfWidth / inSampleSize) >= reqWidth) {
            inSampleSize *= 2;
        }
    }

    return inSampleSize;
}

وبعد ازشون به این صورت استفاده کنید

ImageView imageView= (ImageView) findViewById(R.id.imageView);
imageView.setImageBitmap(decodeSampledBitmapFromResource(getResources(),R.drawable.myimage,250,250));

موفق باشید.

دارای دیدگاه مهر 15, 1395 توسط armin  
این کار رو همنطور که پیشنهاد کردین انجام دادم اول حجمش کم کردم تا جایی که به وضوحش لطمه وارد نشه الان شده نزدیک 500 کیلوبایت اون قسمت هنگ و فرس کلوز هم برطرف شده اما عکس نشون داده نمیشه، برنامه عکس لود کرده چون صفحه اکتویتی به همون اندازه اسکرول میخوره اما چیزی نیس انگار خالیه. البته تو ماشین مجازی نشون میده بدون هیچ مشکلی کار میکنه اما تو گوشی (چندتا گوشی تست گرفتم) عکس نشون داده نمیشه فقط اسکرول میخوره به اندازش.

977 سوال

819 پاسخ

1,329 دیدگاه

1,273 کاربر

متاسفانه نیستم

این مطلب را به اشتراک بگذارید

ali.ashkaran@gmail
ما .....
  • سعی بر پاسخگویی به سوالات دیگران داریم.
  • به سوال و یا نظر دیگران احترام می گذاریم .
  • این وبسایت را به دیگران معرفی می کنیم.
  • همواره صمیمیت و ادب را رعایت می کنیم.
  • به سوالمان برچسب های مرتبط اضافه می کنیم.
  • در حین طرح سوال فرد خاصی را مخاطب قرار نمی دهیم .
...