Benim EditText bir parçasından EditText değerini Kurtar benim fragmanda adlandırılır: EquationsResultat.javabaşka
Ben iki tane NullPointerException
ile vardır: EquationsCalculFragment.java Ben adında benim fragmanında değerini kurtarmak istediğiniz görünür neden yok (doğrudan koddaki yorumlara bakın). NB: EquationsResultsFragment'teki hata için, Float.parseFloat()
ile birlikte String.valueOf()
ile birleştirmeyi denedim, ancak ikisi birlikte çalıştı.
EquationsCalculFragment.java
public class EquationsCalculFragment extends Fragment {
private ViewPager viewPager;
private EditText champ_a;
private EditText champ_b;
private String a;
private String b;
public float getA_equa_2nd() {
return Float.parseFloat(a);
}
public float getB_equa_2nd() {
return Float.parseFloat(b);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_equations_calcul, container, false);
viewPager = (ViewPager) getActivity().findViewById(R.id.viewpager);
champ_a = (EditText) view.findViewById(R.id.equa_2nd_a);
champ_b = (EditText) view.findViewById(R.id.equa_2nd_b);
Button button = (Button) view.findViewById(R.id.btn_equations_resultats);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
b = champ_b.getText().toString();
a = champ_a.getText().toString();
EquationsResultatFragment eqResFr = new EquationsResultatFragment();
eqResFr.getResultat(getA_equa_2nd(), getB_equa_2nd()); //NullPointerException happens here
//at com.example.slabre.applitest.EquationsCalculFragment$1.onClick(EquationsCalculFragment.java:60)
viewPager.setCurrentItem(1, true);
}
});
return view;
}
}
public class EquationsResultatFragment extends Fragment { private TextView results; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_equations_resultat, container, false); results = (TextView) view.findViewById(R.id.equa_2nd_resultat); return view; } public void getResultat(float a, float b) { results.setText(String.valueOf((a*a)+(2*a*b)+(b*b))); // NullPointerException happens here // at com.example.slabre.applitest.EquationsResultatFragment.getResultat(EquationsResultatFragment.java:29) } }
EquationsResultat.java
Ben bu büyük bir sorun olmadığını düşünüyorum, bana yardımcı olabilir umuyoruz.Veli Etkinlik: TabFragment.java(evet benim uygulaması bir TabLayout ve ViewPager ile çalışan si) ler düğmeye
public class TabFragment extends Fragment {
public static TabLayout tabLayout;
public static ViewPager viewPager;
public static int int_items = 3 ;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
/**
*Inflate tab_layout and setup Views.
*/
View x = inflater.inflate(R.layout.tab_layout,null);
tabLayout = (TabLayout) x.findViewById(R.id.tabs);
viewPager = (ViewPager) x.findViewById(R.id.viewpager);
/**
*Set an Apater for the View Pager
*/
viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
tabLayout.post(new Runnable() {
@Override
public void run() {
tabLayout.setupWithViewPager(viewPager);
}
});
return x;
}
class MyAdapter extends FragmentPagerAdapter{
public MyAdapter(FragmentManager fm) {
super(fm);
}
/**
* Return fragment with respect to Position .
*/
@Override
public Fragment getItem(int position)
{
switch (position){
case 0 : return new EquationsCalculFragment();
case 1 : return new EquationsResultatFragment();
case 2 : return new EquationsInfosFragment();
}
return null;
}
@Override
public int getCount() {
return int_items;
}
/**
* This method returns the title of the tab according to the position.
*/
@Override
public CharSequence getPageTitle(int position) {
switch (position){
case 0 :
return "Calcul";
case 1 :
return "Résultats";
case 2 :
return "Infos";
}
return null;
}
}
}
Sonuçlara (TextView) erişmeye çalışıyorsunuz ancak EquationsResultatFragment'in görünümü henüz oluşturulmadı. –
Yani, ne zaman getResultat (...) yöntemini çağırmalıyım? – Slabre
Bence bu şekilde şeyler yapmak için iyi bir yaklaşım değil, Daha tutarlı bir şekilde ebeveyn aktivitesini fragmanlar arasındaki veriyi iletmek için bir arabirim olarak kullanın. –