Crash کردن برنامه در Chooser مربوط به Share
با سلام
من یک listView ایجاد کردم که اطلاعاتش رو از طریق سرور میگیره و مایلم که توی برنامم با کلیک روی اون layout یه سری از نوشته های توش share بشه
برای share کردن از این کد استفاده کردم اما به محض زدن روی اون layout برنامه کرش میکنه نمی دونم چرا!
در حالت عادی یعنی وقتی که اکتیویتی ای که توش کدهارو نوشتم از Activity اکستند میشه به خوبی اجرا میکنه اما چون من توی ArrayAdapter دارم می نویسم کرش میشه
چطور میتونم رفعش کنم؟
باتشکر
public void fill(final ArrayAdapter adapter, final StructApplication item, final int position) {
txtName.setText(item.name);
txtDesc.setText(item.desc);
txtPrice.setText("" + item.priceb);
layoutRoot.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent();
i.setAction(android.content.Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_TEXT, txtName.getText().toString());
i.putExtra(android.content.Intent.EXTRA_SUBJECT, "Some subject");
arg0.getContext().startActivity(i.createChooser(i, "share via"));
}
});
}
خطشو نمیدونم ولی توی logcat یه عالمه ایراد میگیره
خیلی سرچ کردم همه ی روشا مشابه همین بود نمیدونم چرا کرش میکنه
مجبور شدم در ArrayAdapter با زدن دکمه ی share یک اکتیویتی دیگه رو فراخوانی کنم و توی اون اکتیویتی که از اکتیویتی extend شده عمل share رو انجام بدم و به خوبی کار کرد اما الکی یه اکتیویتی اضافی و همچنین یک صفحه سفید خالی باز میشه قبل و بعد share که زیاد جالب نیست و ترجیح میدادم روی لیست ویو این اتفاق بیفته
شما یه کلاس به نام EnhancedActivity بسازید و این قطعه کد رو داخل اون بنویسید:
public class EnhancedActivity extends Activity {
@Override
protected void onResume() {
G.currentActivity = this;
super.onResume();
}
}
و تمامی اکتیویتی هاتون رو extends کنید به EnhancedActivity
و در کلاس G نیز این رو اضافه کنید
public static Activity currentActivity;
و کد صحیح شما به این صورت است:
publicvoid fill(finalArrayAdapter adapter,finalStructApplication item,finalint position){
txtName.setText(item.name); txtDesc.setText(item.desc); txtPrice.setText(""+ item.priceb); layoutRoot.setOnClickListener(newOnClickListener(){@Overridepublicvoid onClick(View arg0){Intent i =newIntent(); i.setAction(android.content.Intent.ACTION_SEND); i.setType("text/plain"); i.putExtra(Intent.EXTRA_TEXT, txtName.getText().toString()); i.putExtra(android.content.Intent.EXTRA_SUBJECT,"Some subject"); G.currentActivity.startActivity(i.createChooser(i,"share via"));}});}
علت کرش کردن برنامه شما در کد خط آخر هستش که بجای G.currentActivity از getContext استفاده کرده بودین
موفق باشید!
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .