【问题标题】:The method startActivity(Intent) is undefined for the type?该类型的方法 startActivity(Intent) 未定义?
【发布时间】:2011-08-12 01:52:51
【问题描述】:

所以我试图通过按下一个小部件来启动一个活动。我一直遇到错误“对于照片类型未定义方法 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); }

}

【问题讨论】:

    标签: android android-activity widget


    【解决方案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);
        }
    }
    

    【讨论】:

    • 谢谢!有效!出于某种原因,虽然它在 HTC Sense 上不起作用,但我觉得这可能只是 Sense 的问题,因为它在我的模拟器中工作。另外,假设我希望它启动照片应用程序,我将如何弄清楚系统定义的意图。感谢您的帮助
    • 您是否正在尝试查看图像,也就是说您有一个 URI 并想要启动查看器,如果是,请查看以下问题:link。我不确定您是否可以依赖“系统定义的意图”,因为不同的制造商可能会提供自己的图库应用程序,例如HTC、三星..
    【解决方案2】:

    你把这段代码放在什么方法里? AppWidgetProvider 没有 startActivity() 方法。为此,您需要ContextAppWidgetProvider 的几个回调方法可以让您访问 Context 对象,但这完全取决于您打算做什么。

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

    【讨论】:

    • 好吧,我对开发非常陌生,那么究竟什么是上下文,我将如何使用它?我尝试查看文档,但它并没有真正帮助我,非常感谢任何帮助。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多