27 Temmuz 2017 Perşembe

FRAGMENTLER ARASI VERİ GEÇİŞİ - ANDROID

Fragment sayesinde ayni ekran icinde bir cok islem yapabiliriz. Yeni bir activity olusturmak yerine bir activity icine birden fazla fragment olustururuz. Hem bu sekilde yeniden sayfa yuklenmesine gerek olmadigi icin uygulamamiz daha hizli calisir.

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







FragmentA.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.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