Jump to content
.Chiri

Android beginner

Recommended Posts

Posted (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 by .Chiri
Posted

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!

Posted (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 by .Chiri
Posted

ce ti-a spus M2G este foarte corect doar ca in loc de addActionListener si actionPerformed ai setOnClickListener si OnClickListener


public 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

Posted

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.

Posted (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 by SilviuSDS

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...