对于类型,方法startActivity(Intent)是未定义的?

时间:2011-08-12 01:52:52

标签: android android-activity widget

所以我试图通过按下小部件来开始活动。我一直遇到错误“方法startActivity(Intent)未定义类型照片”任何帮助非常感谢!我的班级代码如下:

package com.natehoch96.widgets.iOS;

import android.appwidget.AppWidgetProvider;
import android.content.Intent;


public class Photos extends AppWidgetProvider {

    Intent myIntent = new Intent(android.provider.Settings.ACTION_SETTINGS);
    {startActivity(myIntent); }

}

2 个答案:

答案 0 :(得分:1)

您需要在AppWidgetProvider类中实现onUpdate()和onReceive()方法,如下所示:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
    int[] appWidgetIds) {
    final int N = appWidgetIds.length;
    for (int i=0; i<N; i++) {
        int appWidgetId = appWidgetIds[i];

        //Get the views for your widget layout
        RemoteViews views = new RemoteViews(context.getPackageName(), 
            R.layout.my_widget);

        //Create a pending intent for a widget click
        Intent intent = new Intent(context, Photos.class);
        intent.setAction("PhotosAction");
        PendingIntent pendingIntent = 
            PendintIntent.getBroadcast(context, 0, intent, 0);
        views.setOnClickPendingIntent(R.id.widget_click_view, pendingIntent);

        appWidgetManager.updateAddWidget(appWidgetId, views);
    }
}

然后编写onReceive()方法以接收待处理的意图并启动相关活动:

public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);

    if (intent.getAction().equals("PhotosAction") {
        //Received photos action action, start your target activity
        Intent i = new Intent(android.provider.Settings.ACTION_SETTINGS);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }
}

答案 1 :(得分:0)

您将此代码放入哪种方法? AppWidgetProvider没有startActivity()方法。你需要一个Context。几个AppWidgetProvider的回调方法允许您访问Context对象,但这一切都取决于您打算做什么。

我建议您查看有关AppWidgets here的Android开发人员指南的文档。