Android Build an Interactive Story App Intents and Multiple Activities Getting Resources from the Context

Yusuf Mohamed
Yusuf Mohamed
2,627 Points

A java logic problem.

So in this part of the video we need to access a method from the Resources class.

So I thought you would have to initialize it first like this

Resources resources = new Resources;

and afterwards you have access to all the methods inside that class.

Instead in the video he just created and variable and had access to the variable directly like this

Resources resources = getResources();

Am I missing something?

2 Answers

Steven Parker
Steven Parker
176,280 Points

The resources you want to access already exist, so you don't want to create a new (empty) object here. The "getResources" method is inherited from the context class, and returns a reference to that existing resource object.

Yusuf Mohamed
Yusuf Mohamed
2,627 Points

But if we already have access to the method why are we is the method getResources() set to the variable resources?

Steven Parker
Steven Parker
176,280 Points

You have access to the "getResources" method by inheritance. When you use that method, you get access to the resources object.

Yusuf Mohamed
Yusuf Mohamed
2,627 Points

But instead of doing

Resources resources = getResources();
String key = resources.getString(R.string.key_name);

Why can't we do

String key = getResources().getString(R.string.key_name);

directly without setting the method to a variable?

Steven Parker
Steven Parker
176,280 Points

You can do that. And if you are not going to need the resources for anything else later, that actually would be a good strategy to keep the code more compact.

Yusuf Mohamed
Yusuf Mohamed
2,627 Points

But if I am going to need resources later why would it be a bad idea to do it my way?

Steven Parker
Steven Parker
176,280 Points

If you'll be using it more than once, then assigning a variable the first time saves you from needing to call "getResources" again later. It's the "DRY" principle — "Don't Repeat Yourself".

Happy coding!

Yusuf Mohamed
Yusuf Mohamed
2,627 Points

Now I understand, thanks for the help.

alastair cooper
alastair cooper
25,419 Points

response to: Why can't we do - String key = getResources().getString(R.string.key_name); - directly without setting the method to a variable?

You can do that.

The difference in required computing power is quite small

If you are using them a lot, it saves a bit of typing

see this discussion for more on this https://stackoverflow.com/questions/28446653/whats-more-efficient-storing-variable-references-vs-not-context-in-android

Yusuf Mohamed
Yusuf Mohamed
2,627 Points

Thanks for extra "resources" ba dum Tss