مشکل در ارسال مقادیر از Activity به یک Fragment ؟ ؟؟؟
با سلام خدمت دوستان عزیزم
من مقادیری رو قصد دارم از یک اکتیوتی به یک فرگمنت ارسال کنم ...
با جستجویی کردم کد های زیر رو پیدا کردم ولی برنامه کرش میکنه
ممنون میشم کمک کنید ... در ادامه کدی که نوشتم رو براتوون قرار میدم .
کدی که در اکتیوتی نوشتم .
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_activity);
Bundle extras = getIntent().getExtras();
userInput = extras.getFloat("USER_E");
userE = extras.getInt("ZINEH");
maxton = extras.getInt("ZARFIYAT_BASCOOL03");
Test_Type = extras.getString("TEST_TYPE");
Payeh = extras.getInt("PAYEH");
HomeFragment fragment = new HomeFragment();
Bundle args = new Bundle();
args.putString("TEST_TYPE", Test_Type);
fragment.setArguments(args);
toolbar = (Toolbar) findViewById(R.id.toolBar);
setSupportActionBar(toolbar);
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
tabLayout.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
}
viewPager = (ViewPager) findViewById(R.id.viewPager);
setupViewPager(viewPager);
}کدی که در Fragment نوشتم :
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v;
v = inflater.inflate(R.layout.fragment_home, container, false);
txtshow = (TextView) v.findViewById(R.id.txtshow);
myValue = getArguments().getString("TEST_TYPE");
txtshow.setText(myValue);
return v;
}
}
بالاخره بعد از تلاش فراوان خودم جواب رو پیدا کردم و برای سایر دوستان هم میذارم
گام اول در اکتیوتی خودتون متد زیر را بنویسید
public String getMyData() {
return YourStringVariable ;
}گام بعدی اضافه کردن کد زیر در فرگمنت هستش ;
YourActivityName activity = (YourActiviryName) getActivity();
String myDataFromActivity = activity.getMyData();
در اینجا فرض میکنیم که دو اکتیویتی A , B داریم و درون اکتیویتی B یک فرگمنت به نام Bfrag داریم. حالا میخوایم از اکتیویتی A یک مقدار به اکتیویتی B ارسال کنیم و اونو به Bfrag پاس بدیم.
Intent intent = new Intent(A.this, B.class); intent.putExtra("EXTRA_SESSION_ID", Id); startActivity(intent);
خب حالا توی اکتیویتی B و در ابتدای متد onCreate قبل از فراخوانی فرگمنت این مقدار رو میگیریم.
String s = getIntent().getStringExtra("EXTRA_SESSION_ID");
خب حالا فرگمنت رو فراخوانی میکنیم.
Bundle bundle = new Bundle(); bundle.putString("EXTRA_SESSION_ID", s);
// set Fragmentclass Arguments
Bfrag frag= new Bfrag();
frag.setArguments(bundle);
// replace youre fragment
حالا در متد onCreate برای فرگمنت به این صورت مقدار رو دریافت میکنیم.
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
try{
myString= getArguments().getString("EXTRA_SESSION_ID");
}catch (Exception e){
Log.e(TAG,"can not get id:"+e.getLocalizedMessage());
}
super.onCreate(savedInstanceState);
}
public static YourFragment newInstance(Bundle bundle) {
YourFragment yourFragment = new YourFragment();
yourFragment.setArguments(bundle);
return yourFragment;
}
اکتیویتی:
YourFragment yourFragment = YourFragment.newInstance(bundle);
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .