I can't get get a global variable to work in my Android App!

I can't get get a global variable to work in my Android App. I can get it to work within a method, but not outside of the method. I want to make my variables available to other methods. If I move my variables to just before the first method, the app stops working. After further tests, I have also found out that if I move all my variables to the beginning of the method, my app will stop as well. Finally after putting the variables to the original location, just before they are used, the app will run. I also noticed, however if I run debug when the app is working, that there are threads having difficulty being attached or something.

My questions are as follows:
How can I move my variables to be used globally and have the app run?
Why am I getting the thread error even when the app works, and how do I fix it?

please let me know if I need to provide more code! Debug error
package auto.speaker;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Button;
import android.widget.ToggleButton;

public class Main extends Activity {
    /** Called when the activity is first created. */
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
    	// Variables
    	
    	// Code
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // Create an instance of preferences to recall the data stored in it
        final SharedPreferences settings = getPreferences(0);
        // Create an instance of the toggle buttons and set them according to the values stored in preferences
        final ToggleButton toggleAS = (ToggleButton) findViewById(R.id.ToggleAutoSpeaker);
        toggleAS.setChecked(settings.getBoolean("AutoSpeakerEnabled", true));
        final ToggleButton toggleANP = (ToggleButton) findViewById(R.id.ToggleAutoNumPad);
        toggleANP.setChecked(settings.getBoolean("AutoNumPadEnabled", true));
        
        
        //Create an instance of the telephony manager
        //final TelephonyManager phoneState = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        //PhoneStateListener listener = new PhoneStateListener();
        //listener.onCallStateChanged(MODE_PRIVATE, TELEPHONY_SERVICE); //listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
        
        
        // Create an instance of the save button and listen to click events
        final Button saveButton = (Button) findViewById(R.id.saveButton);
        saveButton.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				// Create an instance of editor to store the value of the toggle button
				SharedPreferences.Editor editor = settings.edit();
				editor.putBoolean("AutoSpeakerEnabled", toggleAS.isChecked());
				editor.putBoolean("AutoNumPadEnabled", toggleANP.isChecked());
				
				// Save the changes
				editor.commit();
				
				// Close the screen
				finish();
			}
		});
    }
    
    /*
    @Override
	protected void onPause()
	{
		super.onPause();
		
		stopListening();
	}
    
    @Override
	protected void onResume()
	{
		super.onResume();
		
		startSignalLevelListener();
	}*/
}

Open in new window

LVL 6
TheQuietShadowAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

HegemonCommented:
There is no global variables in Java. If you want to share them among different classes or method, you will probably need them declared as class instance variables and in some cases static. You will need to modify the logic of your application accordingly.
0
TheQuietShadowAuthor Commented:
Okay... What about fields? isn't a field basically a global variable?
0
HegemonCommented:
Yes, a field or instance/member variable can be seen as a global variable for the class it is declared in. Whether it is visible/accessible for other classes depends on its visibility modifier: private, protected, public or no modifier.

Bear in mind that if it is NOT declared static, it is accessible only from the current INSTANCE of the class. Thus if your application creates more than one instance but you still need a sort of a global variable to be shared among them, you will probably need to declare it as

public static YourClassName yourVariable;

The above is a very coarse description, you will need to learn Java and OO fundamentals to use member variables properly.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
TheQuietShadowAuthor Commented:
Thanks!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Smartphone Programming

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.