Wysyłanie danych do mojego widżetu (ekranu głównego)

Mam problemy z wysyłaniem danych (łańcuchów) z mojej aktywności do klasy appWidgetProvide.

Mam metodę o nazwie updateWidget. Ta funkcja jest wywoływana przez widget, który konfiguruje aktywność, gdy widget zostanie najpierw umieszczony na ekranie głównym. Metoda ta jest również wywoływana przez metodę onReceive, gdy odbiera dane z jednej z moich czynności, gdy użytkownik wprowadza dane do tej aktywności.

Oto mój problem: widżet zostanie umieszczony na ekranie głównym ze wszystkimi danymi we właściwym miejscu. Ale kiedy moja aktywność wysyła dane onReceive (używając intencji i dodatków), dane nie przechodzą. Po prostu dostaję pusty ciąg w extras.getString.

Użyłem intencji do wysyłania danych między działaniami wcześniej, czy muszę wysyłać dane do widgetu w inny sposób niż klasa? A może po prostu jestem głupi i brakuje mi czegoś oczywistego?

Dołączyłem (myślę, że) odpowiednie fragmenty kodu. Daj mi znać, jeśli potrzebujesz wyjaśnienia lub więcej kodu.

Dziękujemy za poświęcenie czasu na przeczytanie tego i za każdą pomoc, którą możesz udzielić,

Pozdrawiam Rakshak

onListItemClick w klasie konfiguracji widgetu.

@Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);

        Cursor note = mDbHelper.fetchNote(id);
        startManagingCursor(note);
        String title = note.getString(note.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE));
        String text = note.getString(note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY));
        loadData(title);


        Intent resultValue = new Intent();
        resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);            
        setResult(RESULT_OK,resultValue);   
        finish();
 }



 void loadData(String title) {

    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(this); 

    SingleNote.updateWidget(this, appWidgetManager, mAppWidgetId, title);

}

Intencja, która wysyła dane do onReceive (jest to jedna z moich klas aktywności)

private void updateWidget() { 
    Intent i = new Intent(this, SingleNote.class); 
    i.setAction(SingleNote.UPDATE_ACTION); 
    Toast.makeText(getApplicationContext(),mTitleText.getText()+"from the activity",
            Toast.LENGTH_SHORT).show();//This works just fine
    i.putExtra("title", mTitleText.getText());
    sendBroadcast(i); 

}

Mój widget zapewnia klasę

public class SingleNote extends AppWidgetProvider {

public static String UPDATE_ACTION = "ActionUpdateSinglenoteWidget";
private static NotesDbAdapter mDbHelper;



public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    final int N = appWidgetIds.length;

    // Perform this loop procedure for each App Widget that belongs to this provider
    for (int i=0; i<N; i++) {
        int appWidgetId = appWidgetIds[i];



     // Tell the AppWidgetManager to perform an update on the current app widget
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.singlenote_widget);
        appWidgetManager.updateAppWidget(appWidgetId, views);




    }
}

@Override 
public void onReceive(Context context, Intent intent) { 

        String action = intent.getAction(); 
        Bundle extras = intent.getExtras(); 
        String title1 = extras.getString("title");//this value does not come through
        Toast.makeText(context, title1,Toast.LENGTH_LONG).show();//this gives an empty space

        if (action != null && action.equals(UPDATE_ACTION)) { 
                final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); 
                ComponentName name = new ComponentName(context, SingleNote.class);
                int[] appWidgetId = AppWidgetManager.getInstance(context).getAppWidgetIds(name);
                final int N = appWidgetId.length;
                if (N < 1)
                {
                    return ;
                }
                else {
                    int id = appWidgetId[N-1];
                    updateWidget(context, appWidgetManager, id ,title1);
                }
        } 

        else { 
                super.onReceive(context, intent); 
        } 
} 



static void updateWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId, String title){

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.singlenote_widget);
    views.setTextViewText(R.id.single_note_title, title);
    appWidgetManager.updateAppWidget(appWidgetId, views);



}

questionAnswers(1)

yourAnswerToTheQuestion