Activity.findViewById() is different from View.findViewById().

The former uses the View set via setContentView() as the root and the
later uses this View as the root. In other words, in order for ...

findViewById(R.id.checkbox);

... to return a non-null View the button must be a child of your view.

On Apr 5, 4:24 pm, xspotlivin <dmbrown2...@gmail.com> wrote:
> I'm trying to create a button in a custom view that I've created. I'm
> looping through an XML document and drawing certain things. I want to
> be able to also create buttons to go in certain locations depending on
> the xml data. I'd like to do it in the view because I want to be able
> to call invalidate() on my view to redraw things and replace the
> buttons when new xml data is available.
>
> The problem is that I put my code in the view class, the activity
> crashes because the button is "null". Here is a subset of my code:
>
> Java:
>     �...@override
>      protected void onDraw(Canvas canvas) {
>
>           // Clock-size rectangle to draw compliance windows
>           RectF clockRect = new RectF(86, 6, 394, 314);
>
>           // Create a node list containing each reminder
>           NodeList reminderNodes = this.clockXML.getElementsByTagName
> ("AdherenceInterval");
>           int reminderLength = reminderNodes.getLength();
>
>           Button checkbox = (Button) findViewById(R.id.checkbox);
>         checkbox.setLayoutParams(new AbsoluteLayout.LayoutParams
> (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0, 0));
>         checkbox.setOnClickListener(new Button.OnClickListener() {
>           public void onClick(View v) {
>                Context context = v.getContext();
>                Intent i = new Intent(context,
> ReportMedications.class);
>                context.startActivity(i);
>           }
>         });
>
> I know this code works for creating buttons because I can put it in my
> activity class and it works just fine. Any suggestions? I thought
> about relocating the button in the activity, but I can't figure out
> how to do this when new data is available.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to