Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
Cum se mostenesc variabilele dintr-o clasa intr-o alta clasa in Android
Last Updated: Jul 14 2017 13:38, Started by
skynet2015
, Jul 07 2017 12:19
·
0
#1
Posted 07 July 2017 - 12:19
Salut,
Am nevoie de indrumare pentru a putea rezolva o problema care ma depaseste. Incerc sa mostenesc o variabila dintr-o clasa intr-o alta clasa. Denumirea variabilelei care vreau s-o mostenesc este: "cod_client". Am nevoie sa mostenesc aceasta variabila "cod_client" in clasa "MyActivity" din clasa background. M-am gandit s-o fac printr-un constructor in care sa initializez variabila, ca s-o pot mosteni, numai ca nu functioneaza. public class MainActivity extends AppCompatActivity { DrawerLayout mDrawerLayout; NavigationView mNavigationView; FragmentManager mFragmentManager; FragmentTransaction mFragmentTransaction; background b; public String pp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); final android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar); toolbar.setTitle("PROFIL"); // fab.setVisibility(View.VISIBLE); toolbar.setTitleTextColor(Color.WHITE); //NU FUNCTIONEAZA IMI INTOARCE NULL b = new background(getApplication()); pp = b.cod_client; Toast.makeText(getApplicationContext(),pp,Toast.LENGTH_LONG).show(); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); mNavigationView = (NavigationView) findViewById(R.id.shitstuff) ; mFragmentManager = getSupportFragmentManager(); mFragmentTransaction = mFragmentManager.beginTransaction(); mFragmentTransaction.replace(R.id.containerView,new profil()).commit(); mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { mDrawerLayout.closeDrawers(); toolbar.setTitleTextColor(Color.WHITE); if (menuItem.getItemId() == R.id.sport) { FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.containerView, new TabFragment()).commit(); toolbar.setTitle("SPORT"); toolbar.setTitleTextColor(Color.WHITE); // fab.setVisibility(View.INVISIBLE); } else if (menuItem.getItemId() == R.id.acvatice) { FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction(); xfragmentTransaction.replace(R.id.containerView,new TabFragment2()).commit(); toolbar.setTitle("ACVATICE"); // fab.setVisibility(View.INVISIBLE); } else if(menuItem.getItemId() == R.id.relaxare) { toolbar.setTitle("RELAXARE"); FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction(); xfragmentTransaction.replace(R.id.containerView,new TabFragment3()).commit(); // fab.setVisibility(View.INVISIBLE); } else if(menuItem.getItemId() == R.id.masaj) { toolbar.setTitle("MASAJ"); FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction(); xfragmentTransaction.replace(R.id.containerView,new TabFragment4()).commit(); // fab.setVisibility(View.INVISIBLE); } else if(menuItem.getItemId() == R.id.setari) { toolbar.setTitle("SETARI"); FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction(); xfragmentTransaction.replace(R.id.containerView,new TabFragment5()).commit(); } return false; } }); /** * Setup Drawer Toggle of the Toolbar */ toolbar.inflateMenu(R.menu.menu_main); final ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout, toolbar,R.string.app_name, R.string.app_name); mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerToggle.syncState(); toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menu ){ if(menu.getItemId() == R.id.profil) { FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction(); xfragmentTransaction.replace(R.id.containerView,new profil()).commit(); toolbar.setTitle("PROFIL"); // fab.setVisibility(View.VISIBLE); } else if(menu.getItemId() == R.id.rezervare) { toolbar.setTitle("REZERVARE"); FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction(); xfragmentTransaction.replace(R.id.containerView,new RezervareServicii()).commit(); // fab.setVisibility(View.VISIBLE); } else if (menu.getItemId() == R.id.factura) { toolbar.setTitle("FACTURA"); FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction(); xfragmentTransaction.replace(R.id.containerView,new Factura()).commit(); // fab.setVisibility(View.VISIBLE); } return false; } }); } public class background extends AsyncTask<String,String,String> { Context ctx; String data = ""; String cnp = "",kg=null,inaltime= null,cod_client; background(Context context) { this.ctx=context.getApplicationContext(); cod_client = ""; } background(String c) { c=cod_client; } @Override protected String doInBackground(String... params) { String type = params[0]; String name = params[1]; String password = params[2]; int tmp; if (type.equals("login")) { try { URL url = new URL("http://192.168.1.1/data2.php"); String urlParams = "email=" + name + "&parola=" + password; HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setDoOutput(true); OutputStream os = httpURLConnection.getOutputStream(); os.write(urlParams.getBytes()); os.flush(); os.close(); InputStream is = httpURLConnection.getInputStream(); while ((tmp = is.read()) != -1) { data += (char) tmp; } is.close(); httpURLConnection.disconnect(); return data; } catch (MalformedURLException e) { e.printStackTrace(); return "Exception: " + e.getMessage(); } catch (IOException e) { e.printStackTrace(); return "Exceptionn: " + e.getMessage(); } } else if (type.equals("inregistrare")) { try { String numee= params[1]; String prenumee=params[2]; String cnp = params[3]; String telefon =params[4]; String email = params[5]; String parola = params[6]; URL url = new URL("http://192.168.1.1/data.php"); String urlParams = "nume=" + numee+"&prenume="+prenumee+"&cnp="+cnp+"&telefon="+telefon+"&email="+email+"&parola="+parola; HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setDoOutput(true); OutputStream os = httpURLConnection.getOutputStream(); os.write(urlParams.getBytes()); os.flush(); os.close(); InputStream is = httpURLConnection.getInputStream(); while ((tmp = is.read()) != -1) { data += (char) tmp; } is.close(); httpURLConnection.disconnect(); return data; } catch (MalformedURLException e) { e.printStackTrace(); return "Exception: " + e.getMessage(); } catch (IOException e) { e.printStackTrace(); return "Exceptionn: " + e.getMessage(); } } return null; } @Override protected void onPreExecute() { } @Override protected void onPostExecute(String result) { if(result.equals("inregistrare cu succes")) { Toast.makeText(ctx,"Inregistrare cu success!",Toast.LENGTH_LONG).show(); } else if(result.equals("fara success")) { Toast.makeText(ctx,"Inregistrare fara success",Toast.LENGTH_LONG).show(); } String err=null; try { JSONObject emp=(new JSONObject(result)).getJSONObject("user_data"); cod_client = emp.getString("cod_client"); cnp = emp.getString("cnp"); kg=emp.getString("kilograme"); inaltime=emp.getString("inaltime"); Toast.makeText(ctx,"id este "+cod_client+"cnp este "+cnp,Toast.LENGTH_LONG).show(); } catch (JSONException e) { e.printStackTrace(); err = "Exception: "+e.getMessage(); } if(cod_client != null && cnp!=null) { Toast.makeText(ctx,"Autentificare cu success!",Toast.LENGTH_LONG).show(); Intent intent = new Intent(ctx,MainActivity.class); intent.putExtra("cod_client", cod_client); intent.putExtra("cnp", cnp); intent.putExtra("kg", kg); intent.putExtra("inaltime", inaltime); ctx.startActivity(intent); } else { Toast.makeText(ctx,"Autentificare esuata....",Toast.LENGTH_LONG).show(); } } |
#2
Posted 07 July 2017 - 12:33
1. În Java, a moșteni, respectiv moștenirea are un anumit înțeles, din ce văd eu aici, moștenirea nu se aplică în cazul tău.
2. În al doilea constructor pentru background, background(String c), ai c = cod_client, este o eroare de logică, ar trebui să fie invers. 3. Îți întoarce null sau "", adică string gol? Ce valoare te-ai aștepta să primești dacă ar funcționa corect? 4. Ai încercat cu un debugger să vezi ce se întâmplă? Edit 5. Ești sigur că folosești AsyncTask cum trebuie? Conform https://developer.an.../AsyncTask.html trebuie apelată metoda execute() ca să ruleze, dar nu o văd apelată în codul tău. Edited by tavitu, 07 July 2017 - 12:39. |
#3
Posted 07 July 2017 - 12:47
3. Nu imi intoarce null imi intoarce un string gol.Ma astept sa primesc o valoare din baza de date cu codul de client.
5. Am executat metoda execute() in alta clasa iar dupa autentificare in variabila cod_client mi se salveaza codul de client care il i-au din baza de date dar am nevoie de acest "cod_client" in clasa "MyActivity". |
#4
Posted 07 July 2017 - 13:14
Logica e greșită. Trebuie să apelezi b.execute(), dacă doInBackground() reușeste, atunci în onPostExecute() o să ai cod_client valid, doar atunci poți să transmiți valoarea validă pentru cod_client către MyActivity. Plus că am mai observat alte lucruri ciudate.
|
#6
Posted 07 July 2017 - 13:16
Codul client este deja populat cu date il aduc din baza de date.
Numai ca nu reusesc sa imi aduc valoarea din variabila cod_client in clasa MainActivity . @IllusiveMan Scuze mi-a ramas in cap "MyActivity". Edited by skynet2015, 07 July 2017 - 13:18. |
#7
Posted 07 July 2017 - 13:20
Mi-am dat seama... ok... acu' intreaba-te: de ce anume ar trebui ca MainActivity sa mosteneasca ceva din clasa background (care e cam la plesneala facuta, ba chiar si variabila aia cod_client tot la plesneala) ... de curiozitate, ce e asta, la ce-ti trebuie?
|
#8
Posted 07 July 2017 - 13:20
b = new background(getApplication()); // cod_client ia valoarea "" - string gol
pp = b.cod_client; // dacă nu ai apelat b.execute()/chiar dacă ai apelat b.execute(), dar doInBackground() și onPostExecute() nu au terminat de executat, cod_client o să aibe valoarea "", string gol, în momentul în care faci atribuirea, chiar dacă mai târziu o să aibe o valoare validă Înțelegi? |
#9
Posted 07 July 2017 - 13:34
@IllusiveMan Aplicatia este gandita pe fragmente.
Am nevoie sa mut codul de client care il i-au din baza de date in clasa MainActivty deoarece acesta imi este util pentru a face factura unui client pe baza unui cod de client. In momentul cand schimb fragmentul si ajung in Factura dupa cum se poate vedea in clasa MainActivity, am nevoie sa mut codul de client din MainActivity in FACTURA, dar trebuie sa trec prin clasa MainActivity pentru a muta codul de client in FACTURA |
#10
Posted 07 July 2017 - 16:08
Nu m-am mai uitat pe android API de ceva vreme, însă parcă existau metode pentru message passing.
|
|
#11
Posted 07 July 2017 - 21:50
cred ca incerci sa faci ceva asincron, da nu prea intelegi ce se intampla
|
#12
Posted 07 July 2017 - 22:07
Cred ca urmeaza modelul curat de modularizare a aplicatiilor android.
|
#13
Posted 08 July 2017 - 01:08
Ceea ce face este foarte logic si corect, incearca sa mosteneasca codul de client dintr-un fragment in toate celelalte ca pe baza lui sa poata face interogari si inserari intr-una sau mai multe tabele ale unei baza de date.
Practic aplicatia are fluiditate daca este lucrata pe fragmente, nu mai exista delay-uri in experienta, iar in functie de specificul ei poate sa execute toate operatiile asupra bazei de date la un anumit momentdat (final). Edited by 13YTe, 08 July 2017 - 01:10. |
#14
Posted 08 July 2017 - 08:46
Nu este moștenirie! Problema lui nu este cu fragmentele ci cu AsyncTask, mai exact cu faptul că AsyncTask este, ei bine, este asincronă și el încearcă să o folosească ca fiind sincronă.
Răspunsul de la întrebarea asta arată cum se folosește AsyncTask pentru a transfera un rezultat calculat de AsyncTask (codul de client) către MainActivity. |
#15
Posted 14 July 2017 - 13:38
Boss, te chinui foarte mult daca nu citesti si tu 200-300 pagini dintr-o carte de Android App Devel sau daca prefer uita-te la o mini-serie de tutoriale video pe subiectu asta.
Daca nu faci unu din astea doua, te vei umple de nervi, frustrare, nu o sa intelegi nimic, iar dupa ce rezolvi problema actuala o sa dai peste altele la care la fel o sa stai 2-3 zile. E mult mai simplu sa pierzi din prima 2 zile cu cele 300 de pagini. Pur si simplu tre sa intelegi cum e organizata o app de Android, ce-i ala un Activity, care-i ciclul de viata, si cam care ar fi stilul de lucru. Edited by InTech, 14 July 2017 - 13:38. |
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users