Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 单击Widget不会打开新活动_Android_Eclipse - Fatal编程技术网

Android 单击Widget不会打开新活动

Android 单击Widget不会打开新活动,android,eclipse,Android,Eclipse,我对制作Android应用程序真的很陌生;只是试着制作一个简单的小部件,告诉时间。如果你点击这个小部件,它也会打开一个基本的活动。小部件和活动位于同一工作区中的两个不同项目文件中,因此我必须将活动包导入以访问其类 完整代码: public class FirstWidget extends AppWidgetProvider { RemoteViews view = null; public void onUpdate(Context context, AppWidgetManager ap

我对制作Android应用程序真的很陌生;只是试着制作一个简单的小部件,告诉时间。如果你点击这个小部件,它也会打开一个基本的活动。小部件和活动位于同一工作区中的两个不同项目文件中,因此我必须将活动包导入以访问其类

完整代码:

public class FirstWidget extends AppWidgetProvider {
RemoteViews view = null;


public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    Intent intent = new Intent(context, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
    view = new RemoteViews(context.getPackageName(), R.layout.main);
    view.setOnClickPendingIntent(R.id.widget_textview, pendingIntent);
    appWidgetManager.updateAppWidget(new ComponentName(context, FirstWidget.class), view);


    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new MyTime(context, appWidgetManager), 1, 1000);
}
private class MyTime extends TimerTask {
    AppWidgetManager appWidgetManager;
    ComponentName thisWidget;
    DateFormat format = SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM, Locale.getDefault());

    public MyTime(Context context, AppWidgetManager appWidgetManager) {
        this.appWidgetManager = appWidgetManager;
        thisWidget = new ComponentName(context, FirstWidget.class);
    }
    public void run() {
        Calendar cal = format.getCalendar();
        int day = cal.get(Calendar.DAY_OF_WEEK);
        switch (day) {
        case(2):
            view.setTextViewText(R.id.widget_textview, "MONDAY TIP " + format.format(new Date()));
            break;
        case(3):
            view.setTextViewText(R.id.widget_textview, "TUESDAY TIP " + format.format(new Date()));
            break;
        case(4):
            view.setTextViewText(R.id.widget_textview, "WEDNESDAY TIP " + format.format(new Date()));
            break;
        case(5):
            view.setTextViewText(R.id.widget_textview, "THURSDAY TIP " + format.format(new Date()));
            break;
        case(6):
            view.setTextViewText(R.id.widget_textview, "FRIDAY TIP " + format.format(new Date()));
            break;
        case(7):
            view.setTextViewText(R.id.widget_textview, "SATURDAY TIP " + format.format(new Date()));
            break;
        case(1):
            view.setTextViewText(R.id.widget_textview, "SUNDAY TIP " + format.format(new Date()));
            break;
        }
        appWidgetManager.updateAppWidget(thisWidget, view);
    }
}
}
我在Eclipse中将该活动设置为一个库,并通过Properties->Android->Library将其同步到小部件。还通过属性->Java构建路径->活动包将活动添加到小部件的Java构建路径

当我将小部件导入emultaor时,小部件和应用程序都会被下载。我也可以将两者都带到前屏幕。应用程序按预期工作单击按钮,进入屏幕。小部件每秒更新其时间和日期

但是点击这个小部件什么也做不了


已经看了5个小时不同的教程了。不知道我做错了什么。任何帮助都会很好

您的AppWigetProvider中似乎没有构造错误。您说如果您的活动不是库,您会得到ClassDefNotFoundException。所以我猜问题在于您的意图。这可能是由于您的活动未在清单中声明,或者创建意图时活动类的名称不正确,也可能是在另一个包中定义了AppWidgetProvider。因此,我建议在AppWidgetProvider的包中创建一个测试Activityin并将其设置为Launcher,然后尝试从中打开MainActivity。如果有任何意图成功打开MainActivity,在AppWidgetProvider中使用它来创建您的PendingEvent可能是合适的选择。

最终解决了这个问题,有两个主要问题

1我的小部件清单需要说明应用程序的所有活动,而不仅仅是主页我的应用程序有2页

<activity android:name="com.example.aubreysapp.MainActivity">
    <intent-filter> 
        <action android:name="android.intent.action.MAIN" />
        <action android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
    <activity android:name="com.example.aubreysapp.DisplayMessageActivity" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <action android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

2解决了这个问题后,我被大骂该应用程序无法安装。取消选中它是一个库,现在一切都很好。

如果您不使用库直接将其添加到项目中,您的活动是否会打开?否。我尝试了这一点,但当小部件尝试查找我的.class活动时,它会中断,即使它已导入并且Eclipse对此没有问题。您在Logcat中是否收到任何错误或警告?这两个活动都在库中或包中?在这样的设置中不会出现,如果您的活动是库中的,则不会出现错误?