Bu derste iki fragment arasında veri alışverişini nasıl yapacağımızı anlattım.
Bu konu aslında fragmentten activity’e ve activity’den fragmente veri gönderme işlemlerinin birleşiminden ibaret.
İlgili activity sınıfını köprü gibi kullanıp fragmentler arası veri gönderme işlemini yapıyoruz.
Bu örnek için detaylı açıklama yapmayacağım. Anlamayan arkadaşlar lütfen bu dersten önceki son iki dersin açıklamalarına baksınlar.
Bu örnek için yazılan kodlar aşağıdadır…
Umarım faydalı bir ders olmuştur…
1 2 3 4 |
public interface MyListener { void sayilariTopla(int sayi1, int sayi2); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
public class FragmentA extends Fragment { EditText sayi1; EditText sayi2; Button sayilariGOnder; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v= inflater.inflate(R.layout.fragment_a, container, false); sayi1= (EditText) v.findViewById(R.id.etSayi1); sayi2= (EditText) v.findViewById(R.id.etSayi2); sayilariGOnder= (Button) v.findViewById(R.id.btnActivityeSayilariGonder); sayilariGOnder.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendData(); } }); return v; } public void sendData(){ int s1=Integer.parseInt(sayi1.getText().toString()) ; int s2=Integer.valueOf(sayi2.getText().toString()); MyListener listener= (MyListener) getActivity(); listener.sayilariTopla(s1, s2); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public class FragmentB extends Fragment { TextView sonuc; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v=inflater.inflate(R.layout.fragment_b, container, false); sonuc= (TextView) v.findViewById(R.id.tvSonucFragment); return v; } public void sayilariTopla(int sayi1, int sayi2) { int toplam=sayi1+sayi2; sonuc.setText("SONUC = "+toplam); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public class MainActivity extends AppCompatActivity implements MyListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void sayilariTopla(int sayi1, int sayi2) { FragmentManager manager=getFragmentManager(); FragmentB fragmentB= (FragmentB) manager.findFragmentById(R.id.fragment2); fragmentB.sayilariTopla(sayi1, sayi2); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.emrealtunbilek.fragmenttofragmentdata.MainActivity"> <fragment android:layout_width="wrap_content" android:layout_height="wrap_content" android:name="com.example.emrealtunbilek.fragmenttofragmentdata.FragmentA" android:id="@+id/fragment" tools:layout="@layout/fragment_a" android:layout_marginTop="117dp" android:layout_alignParentEnd="true" android:layout_alignParentStart="true" /> <fragment android:layout_width="wrap_content" android:layout_height="wrap_content" android:name="com.example.emrealtunbilek.fragmenttofragmentdata.FragmentB" android:layout_marginTop="98dp" android:id="@+id/fragment2" tools:layout="@layout/fragment_b" android:layout_below="@+id/fragment" android:layout_alignParentStart="true" android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" /> </RelativeLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#0ec" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <EditText android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="0" android:inputType="number" android:id="@+id/etSayi1" /> <EditText android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="0" android:inputType="number" android:id="@+id/etSayi2" /> </LinearLayout> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="Activity'e Gönder" android:id="@+id/btnActivityeSayilariGonder" /> </LinearLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#033" android:orientation="vertical"> <TextView android:text="TextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="10dp" android:id="@+id/tvSonucFragment" android:textColor="@android:color/white" android:textAppearance="@style/TextAppearance.AppCompat.Medium" /> </RelativeLayout> |