In my onCreate() method, I'm instantiating an ImageButton View:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_post);
final ImageButton ib = (ImageButton) findViewById(R.id.post_image);
...
In onResume, I want to be able to change the properties of the ImageButton with something like: @Override protected void onResume() { super.onResume(); ib.setImageURI(selectedImageUri); } //END onResume
But onResume doesn't have access to the ib ImageButton object. If this were a variable, I'd simple make it a class variable, but Android does not allow you to define View object in the class.
Any suggestions on how to do this?
I would make the image button an instance variable, then you can refer to it from both methods if you like. ie. do something like this:
It's worth bearing in mind though that instance variables are relatively expensive in Android, so it's more efficient to use a local variable within the method if it's only used in one place.
findViewById()
does not create the view, it is just finding the already created view. It was created by inflating the layoutR.layout.layout_post
in the previous line.You could simply call
findViewById()
in youronResume()
method to get a reference to it in that method, or you could changeib
to an instance variable so that it is accessible in methods other thanonCreate()
.Move the declaration from the method to the class. Assuming
selectedImageUri
is within scope...