2012-09-27 21 views
0

我正在創建一個用於學習目的的模擬時鐘小組件,並想知道如何進行設置佈局以更改時鐘撥號圖像。我已經完成了小部件,但我似乎無法獲得onclicklstener來調出設置佈局。更改時鐘撥號圖像

這是我有:

@Override 
public void onDeleted(Context context, int[] appWidgetIds) 
{super.onDeleted(context, appWidgetIds); 
} 

@Override 
public void onDisabled(Context context) { 
     super.onDisabled(context); 
     } 

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    String action = intent.getAction(); 
    if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) 
    { 

     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); 

     Intent AlarmClockIntent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.android.alarmclock", "com.android.alarmclock.AlarmClock")); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, AlarmClockIntent, 0); 
     views.setOnClickPendingIntent(R.id.Widget, pendingIntent); 

     AppWidgetManager.getInstance(context).updateAppWidget(intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), views); 
    } 
} 
@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
    int[] appWidgetIds) 
{ 
     super.onUpdate(context, appWidgetManager, appWidgetIds); 
     RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.settings); 
     Intent launchActivity = new Intent(context,Widget.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context,0, launchActivity, 0); 
     updateViews.setOnClickPendingIntent(R.id.Widget, pendingIntent); 
     ComponentName myComponentName = new ComponentName(context, Settings.class); 
     AppWidgetManager manager = AppWidgetManager.getInstance(context); 
     manager.updateAppWidget(myComponentName, updateViews); 
} 

} 
+1

「不知道從哪裏開始」總是會讓你失望,你需要給我們更多的工作機會。 – djechlin

+0

我已更新OP瞭解更多信息 –

+0

是的,我已經刪除了我的downvote :) – djechlin

回答

0

這個問題再次here問道。

對於未來的用戶:

將使得確保PendingIntent設置,在onUpdate()方法的代碼。這可以確保一旦widget被放置在設置爲PendingIntent的主屏幕上。

所以:

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgets) { 
    RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_activity); 
    Intent intent = new Intent(context, Info.class); 
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 
    remoteViews.setOnClickPendingIntent(R.id.Widget, pendingIntent); 

另外:

如果你也想擁有信息Activity自動彈出第一個將小部件添加到主屏幕時,你應該閱讀this userful piece of information