I have been working with widgets a wee bit lately, onUpdate() is called when
the configuration completes.


On Thu, Nov 19, 2009 at 3:27 PM, Justin Anderson <janderson....@gmail.com>wrote:

> I've never used the widget configuration, but if my memory serves me
> correctly, you shouldn't need to request an update at the end of your
> configuration activity...
>
> Isn't the widget's onUpdate() method called by default by Android after the
> configuration activity finishes?
>
>
> Thanks,
> Justin
>
> ----------------------------------------------------------------------
> There are only 10 types of people in the world...
> Those who know binary and those who don't.
> ----------------------------------------------------------------------
>
>
> On Thu, Nov 19, 2009 at 1:10 AM, Susan <ska...@gmail.com> wrote:
>
>> Well isn't that spiffy. In that case, if I'm understanding everything
>> correctly, I guess I would just put the read code in onUpdate() and
>> then request an update at the end of my configuration? (Or is there a
>> more elegant way to call specific code in Widget.java?
>>
>> Thanks!
>>
>> On Nov 19, 2:02 am, Justin Anderson <janderson....@gmail.com> wrote:
>> > You will have to have some form of default value for this to work, but
>> here
>> > is how I do it:
>> >
>> > When I want to read from SharedPreferences I do this:
>> > SharedPreference prefMgr =
>> > PreferenceManager.getDefaultSharedPreferences(this);
>> > m_curPage = prefMgr.getInt(getString(R.string.wgt_pref_cur_screen_key),
>> 0);
>> >
>> > When I want to write to it I do this:
>> > SharedPreference prefMgr =
>> > PreferenceManager.getDefaultSharedPreferences(this);
>> > Editor editor = m_prefMgr.edit();
>> > editor.putInt(this.getString(R.string.wgt_pref_cur_screen_key),
>> m_curPage);
>> > editor.commit();
>> >
>> > You don't actually pass an object.  SharedPreferences essentially
>> abstracts
>> > out reading to and writing from a file....
>> >
>> > Thanks,
>> > Justin
>> >
>> > ----------------------------------------------------------------------
>> > There are only 10 types of people in the world...
>> > Those who know binary and those who don't.
>> > ----------------------------------------------------------------------
>> >
>> > On Thu, Nov 19, 2009 at 12:41 AM, Susan <ska...@gmail.com> wrote:
>> > > Justin, thanks. But doesn't that still leave me with the same problem?
>> > > IE, if WidgetConfiguration.java creates the SharedPreferences objet,
>> > > how does it pass that object back to the code running in Widget.java?
>> >
>> > > On Nov 19, 1:16 am, Justin Anderson <janderson....@gmail.com> wrote:
>> > > > You could use SharedPreferences...  I have a Widget that displays
>> > > multiple
>> > > > "pages" of info to the user.  I use the SharedPreferences class to
>> store
>> > > > what page I am currently displaying, so that when the Widget is
>> updated,
>> > > it
>> > > > knows which page to update.
>> >
>> > > >
>> ----------------------------------------------------------------------
>> > > > There are only 10 types of people in the world...
>> > > > Those who know binary and those who don't.
>> > > >
>> ----------------------------------------------------------------------
>> >
>> > > > On Wed, Nov 18, 2009 at 11:32 PM, Susan <ska...@gmail.com> wrote:
>> > > > > I have a widget whose appearance will depend on information gained
>> > > > > from the user in the configuration activity. However, I'm
>> uncertain
>> > > > > how (and in what section of code) to act on the information gained
>> > > > > from the user in the config.
>> >
>> > > > > Here is the target functionality from the user's perspective:
>> >
>> > > > >   When the user creates the widget, the config activity prompts
>> for a
>> > > > > string (with an EditText). The user types it in and presses the
>> submit
>> > > > > button. The config activity goes away and the widget appears on
>> the
>> > > > > homescreen displaying the text the user entered. When the user
>> touches
>> > > > > the widget, the browser is opened and goes to a particular URL
>> that is
>> > > > > determined in part by the string the user entered.
>> >
>> > > > > Here is what I have implemented so far:
>> >
>> > > > > The config activity lets the user enter data and happily displays
>> it
>> > > > > to me as a Toast message. Then the config goes away as desired and
>> the
>> > > > > widget appears with the default widget icon. If you touch the
>> widget,
>> > > > > it goes to a hardcoded URL. (code below)
>> >
>> > > > > My question:
>> >
>> > > > > How do I "connect" the info from the config activity with the code
>> > > > > that displays the widget itself? If I put the user's string in a
>> > > > > putExtra of the intent sent in setResult(), where do I write the
>> code
>> > > > > to retrieve that extra? It seems like it ought to put it somewhere
>> in
>> > > > > the AppWidgetProvider code, but where? (Or is there a better way
>> to do
>> > > > > it?)
>> >
>> > > > > Here are the relevant portions of my code:
>> >
>> > > > > ------------------------
>> > > > >   widget.java:
>> > > > > ------------------------
>> > > > > public class Widget extends AppWidgetProvider
>> > > > > {
>> > > > >    public void onReceive(Context context, Intent intent)
>> > > > >    {
>> > > > >        String action = intent.getAction();
>> > > > >        if
>> (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action))
>> > > > >        {
>> > > > >                //Toast.makeText(context, "onReceive()",
>> > > > > Toast.LENGTH_SHORT).show();
>> > > > >            RemoteViews views = new
>> RemoteViews(context.getPackageName
>> > > > > (), R.layout.widget);
>> >
>> > > > >            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse
>> > > > > ("http://www.cnn.com";));
>> > > > >            i.addCategory(Intent.CATEGORY_BROWSABLE);
>> > > > >            i.setComponent(new ComponentName("com.android.browser",
>> > > > > "com.android.browser.BrowserActivity"));
>> > > > >            PendingIntent pendingIntent = PendingIntent.getActivity
>> > > > > (context, 0, i, 0);
>> > > > >            views.setOnClickPendingIntent(R.id.Widget,
>> pendingIntent);
>> >
>> > > > >            AppWidgetManager.getInstance(context).updateAppWidget
>> > > > > (intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS),
>> > > > > views);
>> > > > >        }
>> > > > >    }
>> > > > > }
>> > > > > // end of widget.java
>> >
>> > > > > ------------------------------------------------
>> > > > >   WidgetConfiguration.java
>> > > > > ------------------------------------------------
>> > > > > public class WidgetConfiguration extends Activity {
>> >
>> > > > >    EditText myEditText;
>> >
>> > > > >    @Override
>> > > > >        public void onCreate(Bundle icicle) {
>> > > > >        super.onCreate(icicle);
>> >
>> > > > >        Intent intent = new Intent();
>> > > > >        intent = getIntent();
>> > > > >        Bundle extras = intent.getExtras();
>> > > > >        int appWidgetId = extras.getInt
>> > > > > (AppWidgetManager.EXTRA_APPWIDGET_ID);
>> > > > >        setResult(RESULT_CANCELED);
>> >
>> > > > >        // Set the view layout resource to use.
>> > > > >        setContentView(R.layout.config);
>> >
>> > > > >        // Find the EditText
>> > > > >        myEditText = (EditText)findViewById(R.id.txt_url);
>> >
>> > > > >            View.OnClickListener mOnClickListener = new
>> > > View.OnClickListener
>> > > > > () {
>> > > > >                public void onClick(View v) {
>> >
>> > > > >                        Intent intent = new Intent();
>> > > > >                        intent = getIntent();
>> > > > >                        setResult(RESULT_OK, intent);
>> > > > >                        Toast.makeText(getBaseContext(),
>> > > > > myEditText.getText(),
>> > > > > Toast.LENGTH_SHORT).show();
>> > > > >                        finish();
>> > > > >                }
>> > > > >            };
>> >
>> > > > >        // Bind the action for the submit button.
>> > > > >        findViewById(R.id.btn_urlSubmit).setOnClickListener
>> > > > > (mOnClickListener);
>> >
>> > > > >        // If they gave us an intent without the widget id, just
>> bail.
>> > > > >        if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
>> > > > >                finish();
>> > > > >            }
>> > > > >    }
>> > > > > }
>> > > > > //end of WidgetConfiguration.java
>> >
>> > > > > --
>> > > > > You received this message because you are subscribed to the Google
>> > > > > Groups "Android Beginners" group.
>> > > > > To post to this group, send email to
>> > > android-beginners@googlegroups.com
>> > > > > To unsubscribe from this group, send email to
>> > > > > android-beginners+unsubscr...@googlegroups.com<android-beginners%2bunsubscr...@googlegroups.com>
>> <android-beginners%2bunsubscr...@googlegroups.com<android-beginners%252bunsubscr...@googlegroups.com>
>> >
>> > > <android-beginners%2bunsubscr...@googlegroups.com<android-beginners%252bunsubscr...@googlegroups.com>
>> <android-beginners%252bunsubscr...@googlegroups.com<android-beginners%25252bunsubscr...@googlegroups.com>
>> >
>> >
>> > > > > For more options, visit this group at
>> > > > >http://groups.google.com/group/android-beginners?hl=en
>> >
>> > > --
>> > > You received this message because you are subscribed to the Google
>> > > Groups "Android Beginners" group.
>> > > To post to this group, send email to
>> android-beginners@googlegroups.com
>> > > To unsubscribe from this group, send email to
>> > > android-beginners+unsubscr...@googlegroups.com<android-beginners%2bunsubscr...@googlegroups.com>
>> <android-beginners%2bunsubscr...@googlegroups.com<android-beginners%252bunsubscr...@googlegroups.com>
>> >
>> > > For more options, visit this group at
>> > >http://groups.google.com/group/android-beginners?hl=en
>> >
>> >
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Android Beginners" group.
>> To post to this group, send email to android-beginners@googlegroups.com
>> To unsubscribe from this group, send email to
>> android-beginners+unsubscr...@googlegroups.com<android-beginners%2bunsubscr...@googlegroups.com>
>> For more options, visit this group at
>> http://groups.google.com/group/android-beginners?hl=en
>>
>
>  --
> You received this message because you are subscribed to the Google
> Groups "Android Beginners" group.
> To post to this group, send email to android-beginners@googlegroups.com
> To unsubscribe from this group, send email to
> android-beginners+unsubscr...@googlegroups.com<android-beginners%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/android-beginners?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to android-beginners@googlegroups.com
To unsubscribe from this group, send email to
android-beginners+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en

Reply via email to