as i mentioned, the simple act of declaring a view (in my example, a label) does not initialize it. only simple data types (eg, int) are initialized on creation. (views created in the designer are initialized, but dynamically created views need to be initialized in code.)
you need to find out which view the error refers to. and where. suddenly, you refer to another sub in your httpjob block. i really have no idea in which sub the error is occurring.
in the snippet you show above, p, m or m.get() could refer to unintialized variables. you're assuming they're valid, i'm assuming they may not be. the same holds true for createAlbum() where the assumption is that the code refers to initialized elements. apparently not, since you're getting an uninitialized view error. if that, in fact, is where the error is.
wrapping code in try/catch blocks can be useful except in cases where you wrap a number of elements in the same block (if there's an error, you won't know which was the offending element, but you would know for sure where the error is occurring). you can test individual elements before using them "blindly". eg before using m in code you can test it for initialization ("if m.isinitialized = false then ..."). once you deal with the error, you can usually remove the test, but in certain cases, it may have to remain. (eg, like with arrays, where it's easy to go beyond its declared size).
i don't know what the button click does, and even if i did, it doesn't necessarily help regarding the error that occurs elsewhere. we don't know which view is the unitialized one. you need to find it and initialize it.