2015-07-17 2 views
2

Я начинаю разработку Android и работаю над проектом, Я пытаюсь получить доступ к глобальной переменной в onclick listner, но я покажу ошибку. Вот глобальной классовойглобальная переменная в onclicklistner

public class GlobalClass extends Application{ 

private String globalUrl; 

public String getGlobalUrl() { 
    return globalUrl; 
} 

public void setGlobalUrl(String globalUrl) { 
    this.globalUrl = globalUrl; 
} 
    } 

Вот его мой основной класс активности, который показывает ошибку на getApplication(), я хочу использовать глобальные переменные в классе деятельности, а также простой класс.

public class MainActivity extends Activity { 
Button Enter; 
EditText textEdit; 
TextView text; 
String url; 

private static String ur = "http://maps.google.com/maps/api/geocode/json?sensor=false&address="; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Calling Application class (see application tag in AndroidManifest.xml) 

    textEdit = (EditText)findViewById(R.id.postalText); 
    text = (TextView) findViewById(R.id.textViewme); 
    Enter = (Button)findViewById(R.id.button_Enter); 



    Enter.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      // Intent launchActivity = new Intent(MainActivity.this,jsonParsingActivity.class); 
      Intent launchActivity = new Intent(MainActivity.this,jsonParsingActivity.class); 
      startActivity(launchActivity); 


      url = ur+ textEdit.getText().toString(); 
      ((GlobalClass) this.getApplication()).setGlobalUrl(url); 
      System.out.println(url); 
      Log.v(url, "extended url"); 

    } 
    }); 

} 

Как удалить эту ошибку ... заранее спасибо

+1

Какова точная ошибка? – TDG

+0

не может решить getApplication – scienticious

+0

Вы зарегистрировали свой класс приложения в манифесте? – TheTanic

ответ

1

Написать эти строки, чтобы поместить значение в глобальных переменных класса

заменить код

((GlobalClass) this.getApplication()).setGlobalUrl(url); 

с кодом ниже

GlobalClass temp=new GlobalClass(); 
temp.setGlobalUrl(url); 
+1

Это не то, что OP хочет сделать. Вы не создаете новый объект класса приложения ... – TheTanic

+0

Это может сработать, но новые экземпляры класса приложения не должны создаваться. Приложение представляет собой глобальный контекст вашего приложения и не должно быть больше одного. Это сбивает с толку и может вызвать ошибки в других местах, например. когда вы пытаетесь использовать URL в другом месте. – FlanschiFox

+0

не будет проблем с тем, что я тоже был протестирован .. он работает отлично для меня, я получил доступ в других местах, также нет проблем .. – saikrupa

1

Просто написать:

MainActivity.this.getApplication() 

вместо

this.getApplication() 

Если вы звоните this в вашем View. OnClickListener ссылается на View.OnClickListener.

Смежные вопросы