🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #153578

Re: początki lamera ;-)

#153578
From: Arivald
Date: Tue, 02 Oct 2012 19:52
112 lines
3777 bytes
W dniu 2012-10-02 13:43, TheGuru pisze:
> Witajcie,
> z pisaniem idzie mi coraz lepiej ale...;-)
>
> mam kłopot z eleganckim przesyłaniem danych między klasami.
>

Co to znaczy "eleganckim"?

Są różna potrzeby, i różne rozwiązania.


> Mam taką klasę :
>
> public class MainActivity {
>     String uwaga = "udało się";
>     static String wFunkcji;
>
>     protected void onCreate(Bundle savedInstanceState) {
>         super.onCreate(savedInstanceState);
>         setContentView(R.layout.main_activity);
>         funkcja = (EditText) findViewById(R.id.etFunkcja);
>     }
>
>     public void onClick(View v) {
>         wFunkcji = funkcja.getText().toString();
>         uwaga = wFunkcji;
>     }
> }
>
> i drugą klasę
>
>
>
> public class RysujWykres {
>     MainActivity mainActiv = new MainActivity();
>     protected void onDraw(Canvas canvas) {
>     tempS = mainActiv.uwaga;
>     }
> }
>
> dlaczego dostaję wartość z deklaracji a nie z przypisania w metodzie
> onClick.
>
> uwaga deklaruję i przypisuję w głównym ciele klasy aby była dostępna w
> całej
> klasie, i jest i działa w tej klasie.
>
> Próbowałem tworzyć metody getUwaga(); i w drugiej klasie pisałem
>
> tempS = mainActiv.getUwaga();
>
> ale bez efektu
>
> zawsze dostaję wartość null
>
> ps.
> static String wFunkcji;
> tak zrobiłem bo tak działa ale chciałbym unikać zmiennych globalnych...
> tylko jak
>

Namotane... i z Twojego opisu wynika że nawiedzone, bo dzieją się rzeczy 
niemożliwe ;-)

Możesz wystawić kod do ściągnięcia? Zobaczył bym o co biega.
Możesz na priv, wywal NOSPAM z adresu.

Z oglądu kodu podejrzewam że nie odróżniasz klasy od jej instancji... Że 
wewnątrz RysujWykres tworzysz drugą instancję MainActivity, zamiast się 
dobrać do pierwszej. Dlatego zmienna statyczna klasy działa, a składowa nie.

Spróbuj tak (sposób niekoniecznie najlepszy, ale wystarczający przy 
założeniu że powinna istnieć tylko jedna instancja klasy MainActivity w 
tym samym czasie):

public class MainActivity {
   ...

   private String uwaga = "udało się";
   public String getUwaga() {
     return uwaga;
   }

   private static MainActivity instance;
   public static MainActivity getInstance() {
     return instance;
   }

   protected void onCreate(Bundle savedInstanceState) {
     instance = this;
     ....
   }

   protected void onDestroy(Bundle savedInstanceState) {
     instance = nil;
     ....
   }


i potem

public class RysujWykres {

     protected void onDraw(Canvas canvas) {
       tempS = MainActivity.getInstance().getUwaga();
     }
}


-- 
Arivald
Technical Details
Message-ID: <k4fglv$2j7$1@news.dialog.net.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
References: <k0127f$r6k$1@news.icpnet.pl> <k4ek17$t08$1@news.icpnet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail
From: Arivald <NOSPAMarivald@interia.pl>
Newsgroups: pl.comp.lang.java
Subject: Re: początki lamera ;-)
Date: Tue, 02 Oct 2012 21:52:50 +0200
Organization: Dialog Net
Lines: 114
Message-ID: <k4fglv$2j7$1@news.dialog.net.pl>
References: <k0127f$r6k$1@news.icpnet.pl> <k4ek17$t08$1@news.icpnet.pl>
NNTP-Posting-Host: dynamic-62-87-247-120.ssp.dialog.net.pl
Mime-Version: 1.0
X-Trace: news.dialog.net.pl 1349207551 2663 62.87.247.120 (2 Oct 2012 19:52:31 GMT)
X-Complaints-To: abuse@dialog.net.pl
NNTP-Posting-Date: Tue, 2 Oct 2012 19:52:31 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20120925 Thunderbird/16.0
In-Reply-To: <k4ek17$t08$1@news.icpnet.pl>
X-Antivirus: avast! (VPS 121002-0, 2012-10-02), Outbound message
X-Antivirus-Status: Clean
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit