0

検索ウィジェットを作成したい。ウィジェットをクリックすると、アプリ内で検索アクティビティが開きます。これは、ウィジェットプロバイダーのonUpdate()からのコードです。

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
    /* as their may be many widget instances for this widget. we get an array. */
    for(int i=0;i< appWidgetIds.length; i++)
    {
        Intent intent = new Intent(context, SearchActivity.class);
        intent.setAction("android.intent.action.SEARCH");
        PendingIntent pdIntent = PendingIntent.getActivity(context, 0, intent, 0);

        RemoteViews view = new RemoteViews(context.getPackageName(), myPackage.R.layout.search_appwidget); 
        view.setOnClickPendingIntent(R.id.search_widget_textbox,pdIntent );
        appWidgetManager.updateAppWidget(appWidgetIds[i], view);
    }

}

SearchActivity.onCreate()内で、インテントアクションをとしてチェックしていIntent.ACTION_SEARCH.equals( this.getIntent().getAction())ます。ただし、ウィジェットプロバイダーを介してPendingIntentを使用してインテントが投稿されると、this.getIntent().getAction()nullが返されます。SearchActivity(アプリのデフォルトのSearchManagerハンドラー)がSearchManagerを介して呼び出されると、有効なアクションがとして取得されandroid.intent.action.SEARCHます。

保留中の意図で何が間違っているのですか?

4

1 に答える 1

1

私はここで私の答えを得ました。アクションがSearchActivity.OnReceive()に投稿されていることを示しています。また、アクションはtext_box(アクティビティではない)に対するものであるため、SearchActivity.getIntent().getAction()nullになります。

于 2010-08-02T20:03:50.173 に答える