Arama butonu
Bu konudaki kullanıcılar: 1 misafir
6
Cevap
349
Tıklama
0
Öne Çıkarma
Android - Metod Boş Değer Döndürüyor
K
9 yıl
Binbaşı
Konu Sahibi

Arkadaşlar, ayrı bir class içinde tanımladığım metod boş değer döndürüyor.Nerde hata yaptığımı bulamadım
Anlayan birisi yardım edebilir mi ?

Class, manifest dosyasında tanımlaması mevcut
android:name=".MyApplication"


public class MyApplication extends Application {

private static MyApplication appInstance = null;

public static MyApplication getInstance() {
return appInstance;
}

@Override
public void onCreate() {
super.onCreate();

appInstance = this;

AndroidNetworking.initialize(getApplicationContext());

}

public String Getir(String link) {

final String[] ree = {"Burda kimse yok"};

AndroidNetworking.get(link)
.setUserAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0")
.setPriority(Priority.LOW)
.build()
.getAsString(new StringRequestListener() {

@Override
public void onResponse(String response) {

ree[0] = response.toString();
}

@Override
public void onError(ANError anError) {

ree[0] =anError.getMessage();
}

});

return ree[0];
}
}



MyApplication al= new MyApplication();
raw=al.Getir(url);
e1.setText(raw);




onResponse metodunda, ree değişkenine atama yapılmıyor

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi kreat -- 14 Aralık 2016; 20:15:38 >

< Bu ileti mobil sürüm kullanılarak atıldı >

M
9 yıl
Binbaşı

String'i final yaptığın için değiştiremezsin. Ama compile error vermesi lazımdı normalde boş string return etmek yerine.



K
9 yıl
Binbaşı
Konu Sahibi

Hocam türlü türlü şeyler denedim.Android studio yönergelerini takip ederek. Finali kaldırınca da böyle hata veriyor
Error:(70, 25) error: local variable ree is accessed from within inner class; needs to be declared final

edit: Hocam string'i geçici olarak ben doldurdum. onResponse kısmında atama yapmıyor.
edit2: komutları metod olmadan çalıştırdım. çalışıyor. ama değişkene atanan veri onResponse bloğundan dışarı çıkmıyor

public void onResponse(String response) {


ree = response.toString();
e1.setText(ree);



}





< Bu mesaj bu kişi tarafından değiştirildi kreat -- 14 Aralık 2016; 20:39:38 >

< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
M
9 yıl
Binbaşı

Bide Activity'yi değil de Application'ı neden extend ettin?



D
9 yıl
Yüzbaşı

quote:

Orijinalden alıntı: kreat

Hocam türlü türlü şeyler denedim.Android studio yönergelerini takip ederek. Finali kaldırınca da böyle hata veriyor
Error:(70, 25) error: local variable ree is accessed from within inner class; needs to be declared final

edit: Hocam string'i geçici olarak ben doldurdum. onResponse kısmında atama yapmıyor.
edit2: komutları metod olmadan çalıştırdım. çalışıyor. ama değişkene atanan veri onResponse bloğundan dışarı çıkmıyor

public void onResponse(String response) {


ree = response.toString();
e1.setText(ree);



}


inner class'a actionlistener yapmışsın bu yüzden o local değişkenin final olması gerekiyor. Global olursa gerek yok tabiki. Ama o değişkenin orada olaması gerekiyor. Global olarak tanımlaman lazım.

Boş değer vermesinin nedenini callback yapmadığın için olduğunu tahmin ediyorum tam emin değilim. Biraz araştırdım ama ;

http://stackoverflow.com/questions/28120029/how-can-i-return-value-from-function-onresponse-of-volley
http://stackoverflow.com/questions/23833977/android-wait-for-volley-response-to-return


Bu mesaja 1 cevap geldi.
K
9 yıl
Binbaşı
Konu Sahibi

@aky

İlk başta activity extend ettim. Sonra FAN kütüphanesinin örneklerinde o şekilde tanimliydi. O şekilde çevirdim.

@Dentrax

Valla hocam değişkeni tanimlamadigim yer kalmadı.

Verdiğin linkleri deneyeceğim.

Android e yeni başladım ama 500 tane sorunla karşılaştım



< Bu ileti mobil sürüm kullanılarak atıldı >


Bu mesajda bahsedilenler: @aky , @Dentrax
K
9 yıl
Binbaşı
Konu Sahibi

Callback işini hallettim.Fakat yine istediğim gibi olmadı. Ben parantez içindeki veriyi dışarı nasıl taşırım.



quote:





Komutlar k1 = new Komutlar();





k1.Getir( new StringRequestListener() {





@Override

public void onResponse(final String response) {



raw=response.toString();

t1.setText(raw);

Log.d("______________________", response.toString());

}



@Override

public void onError(ANError anError) {





}





});





Burdaki kodlar çalışmıyor. Bu kısımda çalışmasını istiyorum



///

/// t1.setText(raw);

//









b1.setOnClickListener(new View.OnClickListener() {



@Override

public void onClick(View view) {





t1.setText(raw);















Event içinde atama yaptığım raw değişkenine sadece yine başka bir event içinde erişebiliyorum.

raw değişkeni parantezler dışında default değerini döndürüyor. ama parantezler içinde son atadığım değeri döndürüyor.

C# ta global değişkene en son hangi değeri atadıysak onu döndürüyordu. Araştırdım java'da global değişken yokmuş. Yeni sınıf oluşturup içerisine değişken tanımladım. Yine olmadı



Bunu nasıl yapıcaz arkadaşlar ? Konu hakkında bilgisi olan var mı ?



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.