.Chiri Posted July 25, 2012 Report Posted July 25, 2012 (edited) Salut,Caut si eu niste ghiduri de programare android care sa fie mai detaliate, majoritatea ghidurilor si a cartilor gasite sar de la hello world la aplicatii mai complexe, iar daca ma uit pe codul sursa la diverse aplicatii nu le inteleg inca. In programare am 5 ani de experienta dar in java sunt incepator.Acum o problema care nu am reusit inca sa o rezolv.am urmatorul cod :public class MainActivity extends Activity { private EditText et1; private Button b1; private TextView tv1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et1 = (EditText)findViewById(R.id.et1); b1 = (Button)findViewById(R.id.b1); tv1 = (TextView)findViewById(R.id.tv1); if(b1.isPressed()==true){ tv1.append(et1.getText()); } }}Ideea era ca la apasarea butonului care apare pe ecran TextView`ului sa`i atribui valoarea EditTextului. Dar cand apas butonul nu se intampla nimic. Edited July 25, 2012 by .Chiri Quote
M2G Posted July 25, 2012 Report Posted July 25, 2012 Nu iti merge pentru ca tu verifici la onCreate(adica momentul in care acel view se creaza) daca butonul este apasat if(b1.isPressed()==true){ tv1.append(et1.getText()); }Cum butonul nu are starea de apasat in acel moment e normal sa nu se intample nimic.Ce trebuie sa faci este sa adaugi un listener pentru acel buton si sa creezi o metoda care se apeleaza in momenul in care acel buton este apasat. Ceva de genul b1.addActionListener(this); In plus trebuie sa implementezi clasei si interfata ActionListener.public class MainActivity extends Activity implements ActionListener.mai jos de onLoad o sa ai acum o metoda care trebuie implementata din interfata ActionListener. Adica ceva de genul:public void actionPerformed(ActionEvent e){}In corpul acele metode trebuie sa verifici daca butonul a fost apasat:public void actionPerformed(ActionEvent e){ if (e.getsource == b1){ //aici vine codul prin care setezi acel text, adica: tv1.append(et1.getText());}}Cum ti-am scris eu se face in Java. Poate in Android e putin diferit modul in care tratezi evenimentele.Nu prea am experianta pe Android dar vrea si eu sa ma apuc de el da saptamana aceasta. Daca vrei resurse de unde sa inveti Android te poti uita aici: Index of /Users/M2G/Android/Pentru Java gasesti resurse aici: Index of /Users/M2G/Java/Bafta si sper ca ai inteles ce am vrut sa zic. Ti-am explicat mai mult la nivel conceptual decat sa iti dau chiar codul care trebuie sa il scrii desii e posibil sa mearga si cum ti-am scris eu codul. Daca zici ca programezi de 5 ani ar trebui sa intelegi usor ce ti-am zis. Bafta! Quote
fulminator Posted July 25, 2012 Report Posted July 25, 2012 cauta pe iutub tutorialele de la "the new boston". Are si pentru java, si pt android development. Bafta. Quote
.Chiri Posted July 25, 2012 Author Report Posted July 25, 2012 (edited) Mersi mult de reply o sa revin cu un reply si-ti zic daca am reusit sau nu. Conceptual am inteles unde e eroarea. Intradevar am uitat sa iau in vedere activity lifecycle.Ok deci am reusit intr`un final sa fac aplicatia sa mearga. mersi M2G pt ponturile vandute. Din ce am descoperit in Androi nu exista onLoad().[daca gresesc sa ma corecteze cieneva]. Activity lifecycle contine : onCreate(), onStart(), onResume(), onPause(), onStop() si onDestroy().pana la urma codul arata ceva de genu : package com.example.hello.world;import android.app.Activity;import android.os.Bundle;import android.widget.*;import android.view.*;public class MainActivity extends Activity { private EditText et1; private Button b1; private TextView tv1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et1 = (EditText)findViewById(R.id.et1); b1 = (Button)findViewById(R.id.b1); tv1 = (TextView)findViewById(R.id.tv1); } @Override public void onStart(){ super.onStart(); b1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { tv1.setText(et1.getText()); } });}} Edited July 25, 2012 by .Chiri Quote
passfig Posted July 25, 2012 Report Posted July 25, 2012 ce ti-a spus M2G este foarte corect doar ca in loc de addActionListener si actionPerformed ai setOnClickListener si OnClickListenerpublic class MainActivity extends Activity implements OnClickListener{ private EditText et1; private Button b1; private TextView tv1; public void onClick(View v) { if(v.getId() == R.id.b1) -> atribuirea textului } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et1 = (EditText)findViewById(R.id.et1); b1 = (Button)findViewById(R.id.b1); tv1 = (TextView)findViewById(R.id.tv1); b1.setOnClickListener(this); }}OnClicklistener poate fi implementat in mai multe feluri, cauta pe net e plin de exemple. link Quote
.Chiri Posted July 25, 2012 Author Report Posted July 25, 2012 ok dar nu e mai bine sa bag codul in onStart() ? Quote
section11 Posted July 25, 2012 Report Posted July 25, 2012 ai 5 ani experienta in programare, si nu ai trecut pana acum prin GUI? Quote
.Chiri Posted July 25, 2012 Author Report Posted July 25, 2012 am 5 ani de experienta in limbaje precum c++ pascal html css php mysql deci nu am prea facut programe native cu interfata grafica. Quote
section11 Posted July 25, 2012 Report Posted July 25, 2012 Atunci ia o carte de java si uitate peste GUI, e mai uman decat sa treci direct pe android, avand in vedere ca pentru Android trebuie sa scrii cod Java. Asteapta-te ca Java sa fie mult mai greu decat PHP. Quote
SilviuSDS Posted August 10, 2012 Report Posted August 10, 2012 (edited) Mura-n gura:import android.app.Activity;import android.content.Intent;import android.content.res.Configuration;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class MainActivity extends Activity { private EditText et1; private Button b1; private TextView tv1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et1 = (EditText)findViewById(R.id.et1); b1 = (Button)findViewById(R.id.b1); tv1 = (TextView)findViewById(R.id.tv1); b1.setOnClickListener(onBtnClick); }private OnClickListener onBtnClick = new OnClickListener() { public void onClick(View v) { tv1.setText(et1.getText().toString()); } };}Deasemenea acest cod nu functioneaza daca butonul este focusabil. Pentru a rezolva asta, in xml la proprietatile butonului vom adauga codul urmator:android:clickable="true" android:longClickable="false" android:onClick="@string/btnclick"Iar @string/btnblick in strings.xml : <string name="btnclick">onBtnClick</string> Edited August 10, 2012 by SilviuSDS Quote