نمایش نتایج 1 تا 7 از 7

نام تاپیک: مشکل در onActivityResult

  1. #1
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    مشکل در onActivityResult

    سلام دوستان


    فرض کنید یک کلاسی داریم که داخلش یک تابع داره...این کلاس اکستند شده از اکتیوتی هست.


    میخواهیم این تابع موجود در داخل این کلاس رو اجرا کنیم و ریزالتشو دریافت کنیم


    پس در ماین اکتیوتی یک نمونه از این کلاس بدین صورت ساختم و تابع مربوطه رو اجرا کردیم :

    update  update=new update(this);


    update.start();


    هنگام اجرای این تابع گالری اجرا میشه و کاربر وقتی فایلشو انتخاب کرد باید ریزالت بده بهم ولی نمیده چرا هیچ ریزالتی نمایش نمیده !

    به نظرتون مشکل از کجاست؟
    نمیخواهم این ریزالت رو داخل ماین اکتیوتی بیارم وگرنه دراین حالت خب کار میکنه...من میخواستم حتماداخل این کلاس ریزالت رو بگیرم.

    public class update extends Activity {


    Activity activity;


    public update(Activity activity) {
    this.activity = activity;
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);



    if (resultCode == RESULT_OK){



    if (requestCode == 1 ) {

    Toast.makeText(activity.getApplicationContext(),"o k",Toast.LENGTH_SHORT).show();


    }
    }

    }
    public void start(){


    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);


    photoPickerIntent.setType("image/* video/*");


    activity.startActivityForResult(photoPickerIntent, 1);
    }


    }

  2. #2

    نقل قول: مشکل در onActivityResult

    سلام میشه بفرمایید هدف نهاییت چیه؟
    چه فرقی داره ریزالت به مای اکتیویتی بره یا به کلاسی که میخایی؟

  3. #3
    کاربر دائمی آواتار samiasoft
    تاریخ عضویت
    مهر 1391
    محل زندگی
    اردبیل
    پست
    1,242

    نقل قول: مشکل در onActivityResult

    نقل قول نوشته شده توسط JYasProgramer مشاهده تاپیک
    سلام میشه بفرمایید هدف نهاییت چیه؟
    چه فرقی داره ریزالت به مای اکتیویتی بره یا به کلاسی که میخایی؟
    کار خاصی که نمیخواستم انجام بدم درواقع میخواستم این حالت رو تست کنم شاید زمانی به درد خورد

    ولی الان همیشه ریزالت رو به ماین اکیتویتی میفرسته هرکار کردم به خود کلاس نفرستاد...نمیدانم اشکالش کجاست

  4. #4

    نقل قول: مشکل در onActivityResult

    ببینید در هر لحظه تنها یک activity روی صفه گوشی فعاله
    وقتی شما update رو زیر کلاس activity قرار دادین ینی دیگه مای اکتیویتی فعال نیست
    پس داده دریافتی تنها در update دریافت میشه

  5. #5

    نقل قول: مشکل در onActivityResult

    نقل قول نوشته شده توسط samiasoft مشاهده تاپیک
    سلام دوستان


    فرض کنید یک کلاسی داریم که داخلش یک تابع داره...این کلاس اکستند شده از اکتیوتی هست.


    میخواهیم این تابع موجود در داخل این کلاس رو اجرا کنیم و ریزالتشو دریافت کنیم


    پس در ماین اکتیوتی یک نمونه از این کلاس بدین صورت ساختم و تابع مربوطه رو اجرا کردیم :

    update  update=new update(this);


    update.start();


    هنگام اجرای این تابع گالری اجرا میشه و کاربر وقتی فایلشو انتخاب کرد باید ریزالت بده بهم ولی نمیده چرا هیچ ریزالتی نمایش نمیده !

    به نظرتون مشکل از کجاست؟
    نمیخواهم این ریزالت رو داخل ماین اکتیوتی بیارم وگرنه دراین حالت خب کار میکنه...من میخواستم حتماداخل این کلاس ریزالت رو بگیرم.

    public class update extends Activity {


    Activity activity;


    public update(Activity activity) {
    this.activity = activity;
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);



    if (resultCode == RESULT_OK){



    if (requestCode == 1 ) {

    Toast.makeText(activity.getApplicationContext(),"o k",Toast.LENGTH_SHORT).show();


    }
    }

    }
    public void start(){


    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);


    photoPickerIntent.setType("image/* video/*");


    activity.startActivityForResult(photoPickerIntent, 1);
    }


    }
    اگر یک کلاس پوشاننده تعریف کنید قاعدتا باید بتونید کاری که می خواهید انجام بدید!
    البته این کدها را تو یک ادیتور نوشتم چون دسترسی به ویندوز و اندروید استودیو نداشتم تست نکردم ببخشید اگر اشتباهی داشت! ولی یک روش با استفاده از درخت وراثت همین هست.

    class Main extends Activity {
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    }

    }

    class Update extends Main {

    Update(Context self){
    super(self);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK)
    if (requestCode == 1 )
    Toast.makeText(activity.getApplicationContext(),"o k",Toast.LENGTH_SHORT).show();


    }

    }

    class MainActivity extends Main {

    MainActivity(Context self){
    super(self);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    ((Update)this).onActivityResult(requestCode, resultCode, data);
    }

    }

  6. #6
    کاربر جدید
    تاریخ عضویت
    شهریور 1397
    محل زندگی
    یزد
    پست
    9

    نقل قول: مشکل در onActivityResult

    سلام

    شما اول یک interface به اسم IGalleryResult بساز مثل زیر

    public interface IGalleryResult {
    void result(String patch);
    void cancel();
    }

    حالا متد استارتت را جایگزین کد زیر کن
    public void start(IGalleryResult galleryResult){
    this.galleryResult=galleryResult;


    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);




    photoPickerIntent.setType("image/* video/*");




    activity.startActivityForResult(photoPickerIntent, 1);
    }

    داخل اکتیویتی Update هم ی شی از IGalleryResult باید بسازی
    حالا قسمتی که متد Start را صدا میزنی توی ورودی IGalleryResult را نیو میکنی و داخل اکتیویتی ‌Update داخل متد onActivityResult از شی که از IGallertResult ساختی استفاده میکنی
    دیگ هم داخل MianActivity نیازی نیست که onActivityResult را بررسی کنی

  7. #7

    نقل قول: مشکل در onActivityResult

    دوست عزیز وقتی یه کلاس از اکتیویتی ارث میبره برای اجرای اون نباید اون رو new کرد
    باید intent تعریف کرد و اون رو استارت کرد
    وقتی این کار رو انجام ندادی طبیعا اکتیویتی ران نشده که بخواد ریزالت داشته باشه
    این از مشکل ریزالت
    برای گرفتن عکس هم بهتره کدی که داخل تابع start نوشتید رو داخل هر اکتیویتی که میخواید عکس رو بگیرید بزارید و توی متد onresult چک کنید چه عکسهایی انتخاب شده
    در نهایت میتونی از این لایبرای استفاده کنی
    https://github.com/kimlet/AndroidImagePicker
    موفق باشی

تاپیک های مشابه

  1. مشکل در onActivityResult در فرگمنت
    نوشته شده توسط slr560 در بخش Android Studio
    پاسخ: 1
    آخرین پست: شنبه 28 تیر 1393, 10:22 صبح
  2. مشکل در Connect به SQL Server
    نوشته شده توسط ghaum در بخش مسائل مرتبط با نصب و راه اندازی
    پاسخ: 4
    آخرین پست: شنبه 30 فروردین 1382, 07:45 صبح
  3. مشکل در دسترسی به Interbase
    نوشته شده توسط Mahdiseif در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 8
    آخرین پست: سه شنبه 26 فروردین 1382, 00:03 صبح
  4. مشکل در بی دی ای دلفی
    نوشته شده توسط hosseinabdollah در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: یک شنبه 17 فروردین 1382, 17:38 عصر
  5. مشکل در نمایش Time
    نوشته شده توسط (امید) در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 4
    آخرین پست: شنبه 24 اسفند 1381, 10:23 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •