آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

Crash کردن برنامه در Chooser مربوط به Share

Tahi  12 سال پیش  11 سال پیش
0 0

با سلام

من یک 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"));
                }
            });

        }

0 0
از کدوم خط ایراد میگیره؟ (12 سال پیش)
0 0
شما قسمت «عیب یابی» رو هم ببینید و Stack رو در متن سئوال قرار بدید، که دوستان بتونن کمک کنن. (12 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
Tahi  12 سال پیش
0 0

خطشو نمیدونم ولی توی logcat یه عالمه ایراد میگیره

خیلی سرچ کردم همه ی روشا مشابه همین بود نمیدونم چرا کرش میکنه

0 0
سوالو کامل تر کردم تا بهتر متوجه شین که اشکال احتمالا! از کجاست (12 سال پیش)
پاسخ به سوال 
Tahi  12 سال پیش
0 0

مجبور شدم در ArrayAdapter با زدن دکمه ی share یک اکتیویتی دیگه رو فراخوانی کنم و توی اون اکتیویتی که از اکتیویتی extend شده عمل share  رو انجام بدم و به خوبی کار کرد اما الکی یه اکتیویتی اضافی و همچنین یک صفحه سفید خالی باز میشه قبل و بعد share که زیاد جالب نیست و ترجیح میدادم روی لیست ویو این اتفاق بیفته

0 0
به عنوان پاسخ درج شد! (11 سال پیش)
پاسخ به سوال 
MeY3am  11 سال پیش
0 0

شما یه کلاس به نام 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 استفاده کرده بودین

موفق باشید!

 

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .