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
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en

Reply via email to