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

نمایش متن Html با استفاده ازTextView درون ListView

AhmadVB  11 سال پیش  11 سال پیش
+1 0

سلام

من یک TextView  دارم که قرار است یک متن html را نشان دهد. البته این TextView درون یک Adapter است که از آن درون یک listView برای نمایش اخبار استفاده می کنم.

txtBody.setText(Html.fromHtml(myHtmlString));
txtBody.setLinksClickable(true);
txtBody.setMovementMethod(LinkMovementMethod.getInstance());

مشکل اینجاست که متن به درستی نشان داده می شود ولی زمانی که روی لینک های درون متن کلیک می شود ForceClose می دهد و logCat هم به این صورت است :

  android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
0 0
لینک انشالله که مشکلت حل بشه (11 سال پیش)
0 0
ممنون ولی دقیقا در پاسخ زیر نیز نوشته ام که من intent ای ندارم که دستی آن را صدا بزنم. این را هم قبلا خودم دیده بودم. (11 سال پیش)
+1 0
شرمنده که هر چی سرچ کردم چیزی غیر از پاسخ خودتون یافت نکردم یافت نکردم و اینکه خودمم نتونستم حلش کنم (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
AhmadVB  11 سال پیش
0 0

من توی اینترنت زیاد گشتم. جوابی که دیگران داده بودند این بود که به جای

 CustomAdapter mAdapter = new CustomAdapter( mContext, itemList);

بنویسید :

 CustomAdapter mAdapter = new CustomAdapter( this, itemList);

ولی مشکل اینجاست که Constructor ای که توی اموزش های استاد نوشته شده اصلا پارامتر context نمی گیرد. من به هر حال پارامتر context را به کلاس Adapter ام اضافه کردم :

قبلا :

    public AdapterNews(ArrayList<StructNews> array) {
        super(G.context, R.layout.adapter_news, array);
    }

جدید :

     public AdapterNews(Context context, ArrayList<StructNews> array) {
super(context, R.layout.adapter_news, array);
}

و درون Activity اصلی نیز آن را این گونه صدا می زنم :

 adapter = new AdapterNews(ActivityNews.this, news);

اما باز هم مشکل حل نشد.

جای دیگری نوشته بود این دستور را اضافه کن ، ولی فکر نمی کنم این به درد مشکل من بخورد. چون من دستی یک Activity را صدا نمی کنم که intent ان را داشته باشم بلکه خود TextView است که سعی در باز کردن لینک ها توسط سایر اپلیکیشن ها می کند

 myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

به هر حال هنوز مشکل من حل نشده...

پاسخ به سوال 
AhmadVB  11 سال پیش
0 0

همانطور که در پاسخ قبلی ام نوشته بودم context را به Adapter ارسال کردم و به جای G.Inflater درون متد getView از یک inflater جدید استفاده کردم به این شکل :

Context context;

public AdapterNews(Activity context, ArrayList<StructNews> array) {
super(context, R.layout.adapter_news, array);
this.context = context;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructNews item = getItem(position);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.adapter_news, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}

مشکلم تا اندازه ای حل شد. ولی حالا یک مشکل دیگر دارد و هنوز هم برنامه با تاچ کردن یکی از لینک های درون متن موجود در TextView کرش می کند. جالب اینکه این بار در Logcat اسم برنامه من را در خطوط قرمز نشان نمی دهد و خطا را از آندروید می گیرد ! خروجی Logcat به شکل زیر است :

11-01 03:28:42.646: E/MessageQueue-JNI(1525): 	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1953)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1405)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.app.Activity.dispatchTouchEvent(Activity.java:2410)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1901)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.View.dispatchPointerEvent(View.java:7426)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3220)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3165)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4292)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4271)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4363)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.os.MessageQueue.nativePollOnce(Native Method)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.os.MessageQueue.next(MessageQueue.java:125)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.os.Looper.loop(Looper.java:124)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at android.app.ActivityThread.main(ActivityThread.java:5041)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at java.lang.reflect.Method.invokeNative(Native Method)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at java.lang.reflect.Method.invoke(Method.java:511)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-01 03:28:42.646: E/MessageQueue-JNI(1525): at dalvik.system.NativeStart.main(Native Method)

11-01 03:28:42.650: E/AndroidRuntime(1525): FATAL EXCEPTION: main
11-01 03:28:42.650: E/AndroidRuntime(1525): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/motorola (has extras) }
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.app.Activity.startActivityForResult(Activity.java:3370)
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.app.Activity.startActivityForResult(Activity.java:3331)
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.app.Activity.startActivity(Activity.java:3566)
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.app.Activity.startActivity(Activity.java:3534)
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.text.style.URLSpan.onClick(URLSpan.java:62)
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212)
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.widget.TextView.onTouchEvent(TextView.java:7536)
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.view.View.dispatchTouchEvent(View.java:7246)
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
11-01 03:28:42.650: E/AndroidRuntime(1525): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)

و مشکل باز هم همچنان پابرجاست !

+2 0
مشکل جدیدتون مربوط میشه به اون لینکتون ، نمیتونه یه میزبان برا ارجاعش پیدا کنه (11 سال پیش)
+2 0
ممنون ، حق با شماست. لینک های من اولش http نداشت. مشکل حل شد. (11 سال پیش)

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