2011-05-12 63 views
0

我想做一個Android小部件,以顯示我的應用程序的一些信息。Android小部件,開始意圖

我已經成功顯示一些信息,但知道我有什麼功能在我的應用程序中「切換頁面」。這意味着按下一個按鈕,並顯示新的信息。但我該怎麼做呢?我曾嘗試不同的東西,我結束了下面的代碼:

public class HelloWidget extends AppWidgetProvider { 
    RemoteViews remoteViews; 

    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
     Toast.makeText(context, "onUpdate", Toast.LENGTH_SHORT).show(); 

     RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); 

     Intent intent = new Intent(); 
     intent.setAction(TestReceiver.TEST_INTENT); 
     intent.setClassName(TestReceiver.class.getPackage().getName(), TestReceiver.class.getName()); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

     remoteViews.setOnClickPendingIntent(R.id.bbutton1, pendingIntent); 
     remoteViews.setTextViewText(R.id.widgetTxt, "The textview"); 
     appWidgetManager.updateAppWidget(appWidgetIds[0], remoteViews); 

     super.onUpdate(context, appWidgetManager, appWidgetIds); 
    } 

    public class TestReceiver extends BroadcastReceiver { 
     public static final String TEST_INTENT = "MyTestIntent"; 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      Toast.makeText(context, "You reached the TestReceiver", Toast.LENGTH_SHORT).show(); 

      if (intent.getAction() == TEST_INTENT) { 
       remoteViews.setTextViewText(R.id.widgetTxt, "Is changed"); 
      } 
     } 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     final String action = intent.getAction(); 
     if (AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) { 
      final int appWidgetId = intent.getExtras().getInt(
        AppWidgetManager.EXTRA_APPWIDGET_ID, 
        AppWidgetManager.INVALID_APPWIDGET_ID); 
      if (appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) { 
       this.onDeleted(context, new int[] { appWidgetId }); 
      } 
     } else { 
      super.onReceive(context, intent); 
     } 
    } 

    @Override 
    public void onDeleted(Context context, int[] appWidgetIds) { 
     Toast.makeText(context, "onDelete", Toast.LENGTH_SHORT).show(); 
     super.onDeleted(context, appWidgetIds); 
    } 
} 

吐司都呈現「的onUpdate」,然後我在「onDeleted」將其刪除。 textview也在onUpdate中改變,但是當我按下按鈕時沒有任何反應。

我的清單是這樣的:

<receiver android:name=".HelloWidget" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
     </intent-filter> 
     <meta-data android:name="android.appwidget.provider" 
      android:resource="@xml/hello_widget_provider" /> 
    </receiver> 

    <receiver android:name=".TestReceiver" android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="MyTestIntent"> 
      </action> 
     </intent-filter> 
    </receiver> 

我到底做錯了什麼?

謝謝

回答

1

您的TestReceiver是HelloWidget的內部類嗎?

然後你沒有在清單中指定正確的名稱。