Article View: pl.comp.lang.java
Article #153578Re: początki lamera ;-)
From: Arivald
Date: Tue, 02 Oct 2012 19:52
Date: Tue, 02 Oct 2012 19:52
112 lines
3777 bytes
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-mailReferences:
<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