Şimdi Ara

Android - Metod Boş Değer Döndürüyor

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
7
Cevap
1
Favori
339
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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



    < 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ı >







  • String'i final yaptığın için değiştiremezsin. Ama compile error vermesi lazımdı normalde boş string return etmek yerine.
  • 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ı >
  • Bide Activity'yi değil de Application'ı neden extend ettin?
  • 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




  • @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ı >
  • 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ı ?




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.