1

を含むアプリ ウィジェットがありTextViewます。android:autoLink プロパティを「web」に設定して、リンクをクリックしてブラウザで起動できるようにします。リンクは問題なくクリック可能になりますが、それらをクリックすると、ブラウザーのアクティビティを開くときに例外がスローされます。

10-31 01:27:56.155: E/Nova.AppWidget(9427): com.capturekenya/.CaptureWidgetProvider v1.0 (1): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
10-31 01:27:56.155: E/Nova.AppWidget(9427):     at android.app.ContextImpl.startActivity(ContextImpl.java:1026)
10-31 01:27:56.155: E/Nova.AppWidget(9427):     at android.app.ContextImpl.startActivity(ContextImpl.java:1013)
10-31 01:27:56.155: E/Nova.AppWidget(9427):     at android.content.ContextWrapper.startActivity(ContextWrapper.java:284)
10-31 01:27:56.155: E/Nova.AppWidget(9427):     at android.text.style.URLSpan.onClick(URLSpan.java:64)
10-31 01:27:56.155: E/Nova.AppWidget(9427):     at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:212)

これはウィジェットの TextView です

<TextView
android:id="@+id/notification_textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/calendar_textView"
android:layout_marginTop="8dp"
android:autoLink="web"
android:ellipsize="end"
android:gravity="center"
android:text="@string/notification"
android:textColor="@color/white"
android:textSize="12dp" />
4

3 に答える 3

2

メソッドgetView(...)で、次のようにビューを膨らませます。

 LayoutInflater.from(YOUR_ACTIVITY_INSTANCE).inflate(R.layout.layout_with_text_view_autolink, parent, false);
于 2015-01-07T16:34:36.140 に答える
1

さて、この質問は URLSpan onClick から生じます

    Uri uri = Uri.parse(getURL());
    Context context = widget.getContext();
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
    context.startActivity(intent);

widget.getContext() が activity のインスタンスでない場合、インテントは FLAG_ACTIVITY_NEW_TASK フラグを追加する必要があります。ここにコードを追加することはできないので、widget.getContext() がアクティビティ インスタンスを返すようにします。

LayoutInflater.from( activityInstance ).inflate(R.layout.xxx,null); または new View( activityInstance)..

于 2014-11-27T08:26:03.093 に答える
0

BaseAdapter から拡張されたクラスの場合の解決策

クラス MainActivity から:

mLeDeviceListAdapter = new LeDeviceListAdapter(MainActivity.this);

クラス LeDeviceListAdapter から BaseAdapter を拡張

LeDeviceListAdapter(Activity activity) {
        beacons = new ArrayList<>();
        mInflator = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
于 2016-11-09T06:44:07.047 に答える