Android Fragmentlar Arası Veri Taşıma

Android Fragmentlar Arası Veri Taşıma

Android Fragmentlar Arası Veri Taşıma

Fragmentlar Arası Veri Taşıma İşlemi

Android Fragmentlar Arası Veri Taşıma

Selamlar, sizlere bu makalemde Fragmentlar arası veri nasıl taşınır konusuna açıklık getireceğim. Yararlı olması dileğimle.

Öncelikle; FragmentBir ve FragmentIki class'ları üretin ve Fragment (android.support.v4.app.Fragment) sınıfından türetin. Ürettiğiniz fragment sınıfları için; fragment1 ve fragment2 isimlerinde olmak üzere 2 adet Layout üretin.

FragmentBir sınıfı için;

public class FragmentBir extends Fragment {
SendMessage SM;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment1, container, false);
return rootView;
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);

Button btnPassData = (Button) view.findViewById(R.id.btnPassData);
final EditText inData = (EditText) view.findViewById(R.id.inMessage);
btnPassData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SM.sendData(inData.getText().toString().trim());
}
});

}

interface SendMessage {
void sendData(String message);
}

@Override
public void onAttach(Context context) {
super.onAttach(context);

try {
SM = (SendMessage) getActivity();
} catch (ClassCastException e) {

}
}
}

SendMessage sınıfı üzerinden interface yardımıyla MainActivity sınıfından override metodu sayesinde içerisine argüman gönderdik.

FragmentIki sınıfı için;

public class FragmentIki extends Fragment {
TextView txtData;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment2, container, false);
return rootView;
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
txtData = (TextView)view.findViewById(R.id.txtData);
}

protected void yakalananVeriyiGoster(String message){
txtData.setText("Yakalanan veri: "+message);
}
}

ViewpagerAdapter isimli sınıf üretiniz ve içerisine;

public class ViewpagerAdapter extends FragmentPagerAdapter {

public ViewpagerAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
Fragment fragment = null;
if (position == 0) {
fragment = new FragmentBir();
} else if (position == 1) {
fragment = new FragmentIki();
}
return fragment;
}

@Override
public int getCount() {
return 2;
}

@Override
public CharSequence getPageTitle(int position) {
String title = null;
if (position == 0) {
title = "Fragment1";
} else if (position == 1) {
title = "Fragment2";
}
return title;
}
}

MainActivity sınıfı için;

public class MainActivity extends AppCompatActivity implements FragmentBir.SendMessage{

TabLayout tabLayout;
ViewPager viewPager;
ViewpagerAdapter viewPagerAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPagerAdapter = new ViewpagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(viewPagerAdapter);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
}

@Override
public void sendData(String message) {
String tag = "android:switcher:" + R.id.viewPager + ":" + 1;
FragmentIki f = (FragmentIki) getSupportFragmentManager().findFragmentByTag(tag);
f.yakalananVeriyiGoster(message); //Diğer sınıfa veri gönderme işini burada gerçekleştiriyoruz.
}
}

MainActivity sınıfı Layout'u

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabMode="fixed" />

</android.support.design.widget.AppBarLayout>


<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />


</android.support.design.widget.CoordinatorLayout>

fragment1.xml için;

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">


<EditText
android:id="@+id/inMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/btnPassData"
android:layout_margin="16dp"
android:hint="Enter here" />

<Button
android:id="@+id/btnPassData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Fragment İkiye Veri Aktar" />


</RelativeLayout>
</ScrollView>

fragment2.xml için;

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/txtData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_centerInParent="true"
android:text="Veri yakalanmadı" />

</RelativeLayout>

İlgili kelimeler;
android fragment veri data
İlgili kategori;
Android Studio Dersleri
Makaleyi paylaşın; Google+FacebookTwitterTumblrPinterestLinkedIn

Benzer makaleler mi eklemeliyim ? Bana LinkedIn ve Github adreslerimden üzerinden ulaşabilirsiniz.