Android Fragmentlar Arası Veri Taşıma
ad area

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>
Bu makaleyi paylaşın:
İstanbul'da yaşıyorum.Web üzerinde Frontend/Backend Geliştirmenin yanı sıra, Android Geliştirme, PHP/ASP.NET, C# Yazılım Uzmanlığı ve Java konuları işliyorum. Kod Şiirdir, onları seviyorum.

Bir yorum bırakın