Bu uygulamamizda ust kisimda bir buton olacak ve alt kisimda textbox yer alacak. Butona tiklandikca altta kac defa tiklandigi yazacak. Bunun icin iki tane Fragment olusturacagiz. Ve bu fragmentler arasinda veri tasinmasi gerekiyor. Bu tasinacak veri butona kac defa tiklandigi bilgisi olacak. Fragment B bu bilgiyi alip textview de gosterecek. Bu iki fragment arasinda veri aktarimini interface yardimiyla yapacagiz. Asagiya en sonda ekraninin nasil goruneceginin resmini koyacagim.
Simdi sirasiyla kodlarimi asagiya ekleyecegim.
fragment_a.xml
fragment_b.xml
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
public class FragmentA extends Fragment implements View.OnClickListener {
Button btnTikla;
int counter = 0;
VeriAkisi veriAkisi;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_a, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
btnTikla = ((Button) getActivity().findViewById(R.id.clickMeBtn));
btnTikla.setOnClickListener(this);
veriAkisi = ((VeriAkisi) getActivity());
}
@Override
public void onClick(View view) {
counter++;
veriAkisi.veriAktar("Butona "+counter+" defa tiklandi");
}
}
FragmentB.java
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class FragmentB extends Fragment {
TextView tikSayisi;
String text;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_b, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
tikSayisi = (TextView)getActivity().findViewById(R.id.tikSayisi);
}
public void tiklanmaSayisiniGoster(String text){
this.text = text;
tikSayisi.setText(text);
}
}
VeriAkisi.java
public interface VeriAkisi {
public void veriAktar(String data);
}
activity_main.xml
MainActivity.java
import android.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity implements VeriAkisi {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void veriAktar(String data) {
FragmentManager manager = getFragmentManager();
FragmentB fragmentB = (FragmentB) manager.findFragmentById(R.id.fragment5);
fragmentB.tiklanmaSayisiniGoster(data);
}
}
Ve uygulamamiz calisir.
kaynak: burada
Hiç yorum yok:
Yorum Gönder