Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Rename SQL column

Achiziționare tuner TV !

Din ce este facuta terasa asta?

Cum accesez site-ul CNAS ?
 Algoritm simplu de calculare al u...

Bitdefender Total Security ș...

casa verde 2024

Intrerupator cu N - doza doar cu ...
 Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...
 probleme cu ochelarii

Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National
 

Dezvoltare aplicatie android

- - - - -
  • Please log in to reply
6 replies to this topic

#1
daniel2007ro

daniel2007ro

    Junior Member

  • Grup: Members
  • Posts: 78
  • Înscris: 27.03.2007
Buna! Am nevoie de putin ajutor.
   Am urmatoarea clasă in Eclipse:

  
private class SendfeedbackJob extends AsyncTask<String, Void, String> {
	 private SendfeedbackJob() {
	 }
			 @Override
			 protected String doInBackground(String... params) {
			 ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
		
				 nameValuePairs.add(new BasicNameValuePair("id",id));
				 nameValuePairs.add(new BasicNameValuePair("name",name));
				
				 try
				 {
			 DefaultHttpClient httpclient = new DefaultHttpClient();
					 HttpPost httppost = new HttpPost(URL);
					 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
					 HttpResponse response = httpclient.execute(httppost);
					 HttpEntity entity = response.getEntity();
					 is = entity.getContent();
					 Log.e("pass 1", "connection success ");
			 }
					 catch(Exception e)
			 {
					 Log.e("Fail 1", e.toString());
			 Toast.makeText(getApplicationContext(), "Invalid IP Address"+ e.toString(),
			 Toast.LENGTH_LONG).show();
			 }
				 try
				 {
					 BufferedReader reader = new BufferedReader
			 (new InputStreamReader(is,"iso-8859-1"),8);
					 StringBuilder sb = new StringBuilder();
					 while ((line = reader.readLine()) != null)
			 {
						 sb.append(line + "\n");
					 }
					 is.close();
					 result = sb.toString();
			 Log.e("pass 2", "connection success ");
		 }
				 catch(Exception e)
		 {
					 Log.e("Fail 2", e.toString());
		 }	
				
		 try
		 {
					 JSONObject json_data = new JSONObject(result);
					 code=(json_data.getInt("code"));
			
					 if(code==1)
					 {
			
		 Toast.makeText(getBaseContext(), "Inserted Successfully",
			 Toast.LENGTH_SHORT).show();
					 }
					 else
					 {
			 Toast.makeText(getBaseContext(), "Sorry, Try Again",
			 Toast.LENGTH_LONG).show();
					 }
		 }
		 catch(Exception e)
		 {
					 Log.e("Fail 3", e.toString());
		 }
	 return "some message";
			 }
			
		
			 @Override
			 protected void onPostExecute(String message) {
				 //process message
				
		 }
	 }

  ... care e instanțiată în MainActivity așa:
  
 SendfeedbackJob job = new SendfeedbackJob();
		 job.doInBackground("something"); 
   Când rulez aplicația îmi apare eroarea:
  " Invalid IP Address android.os.NetworkOnMainThreadException "
   Mă poate ajuta cineva, că mă chinuiesc de ceva vreme cu eroarea asta de conexiune?
   Adresa fisierului php de pe server (URL) e corectă. Am un server Apache cu php și mysql instalat pe un Ubuntu 14.04, care functioneaza pe ip-ul local foarte bine (192.168.x.x).

Edited by daniel2007ro, 11 February 2019 - 22:21.


#2
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Poti intra pe http://192.168.x.x de pe androidul care ruleaza aplicatia?

#3
Xavier_em

Xavier_em

    Member

  • Grup: Members
  • Posts: 332
  • Înscris: 29.10.2006
job.execute() trebuie apelat. Tu apelezi metoda doInBackground de pe main thread, ceea ce Android nu permite.
Daca stii engleza, stackoverflow e mult mai util decat softpedia, pentru domeniul asta.

Si sfatul meu e sa treci la Android Studio, Eclipse e deja depasit.

Edited by Xavier_em, 11 February 2019 - 23:53.


#4
daniel2007ro

daniel2007ro

    Junior Member

  • Grup: Members
  • Posts: 78
  • Înscris: 27.03.2007

View PostXavier_em, on 11 februarie 2019 - 23:52, said:

job.execute() trebuie apelat. Tu apelezi metoda doInBackground de pe main thread, ceea ce Android nu permite.
Daca stii engleza, stackoverflow e mult mai util decat softpedia, pentru domeniul asta.

Si sfatul meu e sa treci la Android Studio, Eclipse e deja depasit.
Mulțumesc pentru răspuns. Am încercat și varianta "job.execute()" însă de data aceasta nu mai primesc niciun mesaj feedback de la "toast". Pur și simplu nu obțin nicio reacție.
   Mă gândesc că o fi ceva în neregulă cu codul php din fișierul căruia îi trimit datele, dar dacă are erori probabil că tot ar trebui să primesc un mesaj toast cu eroare de conectare. Problema e din altă parte și n-am reușit să o depistez.
A! Era să uit... Sistemul meu de operare e "depășit". Am un Linux Mint 18.3 care folosește kernel de Ubuntu 14.04 pe 32 de biți.
  Problema e că android studio pe 32 de biți pe ubuntu trusty (14.04) are erori și nu compilează proiectele. Crede-mă, am încercat deja... și nici nu aș vrea să instalez o versiune de linux mint de 64 de biți pentru că am prea multe chestii în p.c. Posted Image) și-mi ia prea mult să le instalez din nou, așa că Eclipse a funcționat destul de bine până acum, iar pentru o aplicație android simplă e destul... cred.... dacă rezolv această problemă.

View PostOriginalCopy, on 11 februarie 2019 - 23:00, said:

Poti intra pe http://192.168.x.x de pe androidul care ruleaza aplicatia?
Da, serverul apache funcționează perfect.

Edited by daniel2007ro, 12 February 2019 - 14:43.


#5
daniel2007ro

daniel2007ro

    Junior Member

  • Grup: Members
  • Posts: 78
  • Înscris: 27.03.2007
Nu mai contează... Am depistat astăzi eroarea. Era fișierul php de pe server. L-am reeditat, am remediat erorile din el și acum aplicația funcționează perfect. Mulțumesc pentru ajutor!

#6
Xavier_em

Xavier_em

    Member

  • Grup: Members
  • Posts: 332
  • Înscris: 29.10.2006
job.execute() e musai sa-l apelezi, deoarece vrei sa faci munca in background.
Iar Toast.makeText() mi se pare ca nu merge apelat din background, trebuie sa-l scoti in onPostExecute()

#7
daniel2007ro

daniel2007ro

    Junior Member

  • Grup: Members
  • Posts: 78
  • Înscris: 27.03.2007

View PostXavier_em, on 14 februarie 2019 - 10:33, said:

job.execute() e musai sa-l apelezi, deoarece vrei sa faci munca in background.
Iar Toast.makeText() mi se pare ca nu merge apelat din background, trebuie sa-l scoti in onPostExecute()
  Mulțumesc. Ai dreptate. Am făcut deja asta. Am înțeles și eu principiul de funționare al clasei "AsyncTask". Practic, dacă o instanțiezi în activitatea principală s-ar putea să-ți execute codul din "job.execute()" mai târziu decât restul operațiilor sincrone de după "job.execute()" pentru că operațiile sunt asincrone.
  Eu am mai multe clase asincrone în proiect (scriere_json; citire_json; actualizare_mysql) pe care le voi instanția succesiv (nested) în "onPostExecute()" al fiecărei clase, pentru a mă asigura că operațiile asincrone se realizează "sincron" Posted Image  în ordinea corectă. Iar în loc de Toast voi folosi ferestre dialog în proiectul final.
   Adevărul e că sunt "newbie"  în programarea android, dar recuperez din urmă...Posted Image

Edited by daniel2007ro, 16 February 2019 - 09:01.


Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate