نوشته شده توسط
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);
}
}