آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل در ارسال مقادیر از Activity به یک Fragment  ؟ ؟؟؟

123995  7 سال پیش  5 سال پیش
+2 0

با سلام خدمت دوستان عزیزم

من مقادیری رو قصد دارم از یک اکتیوتی به یک فرگمنت ارسال کنم ...

با جستجویی کردم کد های زیر رو پیدا کردم ولی برنامه کرش میکنه

ممنون میشم کمک کنید ... در ادامه کدی که نوشتم رو براتوون قرار میدم .

کدی که در اکتیوتی نوشتم .

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;
}

}
 
0 0
من قبلا اطلاعات به فرگمنت ارسال کردم ولی توی onCreate دریافتشون میکردم. میخواین اینم تست کنین شاید شد (7 سال پیش)
0 0
شما که گفتین فرگمنتتون توی اکتیویتی دومه پس چرا توی اکتیویتی اول اونو تعریف کردین؟ (7 سال پیش)
0 0
بله درست میگید باید دقیقا چطوری این کارو انجام بدم من اومدم در ادامه ابتدا اطلاعات رو به اکتیوتی دوم ارسال کردم حالا از اکتیوتی دوم بخوام به فرگمنت ارسال کنم باز هم برنامه کرش میکنه (7 سال پیش)
0 0
دوست من کد رو اصلاح کردم و دوباره اینجا گذاشتم ولی هنوز هم کار نمیکه اگه کمک کنید ممنون میشم (7 سال پیش)
0 0
مهندس خب کداتو کامل تر بذار بعد کرشتم بذار ببینم چکار کردی. قشنگ بگو اکتیویتی اولت کدومه دومی کدومه فرگمنت تو کدومه (7 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
123995  7 سال پیش
0 0

بالاخره بعد از تلاش فراوان خودم جواب رو پیدا کردم و برای سایر دوستان هم میذارم

گام اول در اکتیوتی خودتون متد زیر را بنویسید

public String getMyData() {
return YourStringVariable ;
}

گام بعدی اضافه کردن کد زیر در فرگمنت هستش ;

YourActivityName activity = (YourActiviryName) getActivity();
String myDataFromActivity = activity.getMyData();
0 0
فک میکنم بد ترین روش ممکن رو انتخاب کرده باشید (7 سال پیش)
0 0
درست میگی و به نظرم این یه روش استاندارد نیست و برای ارسال اطلاعات از اکتیوتی به فرگمنت باید از Bundle و Argument استفاده کرد ولی من هر کاری کردم موفق نشدم از اون روش استفاده کنم و اروری که میداد این بود که مقدار null به فرگمنت ارسال میشد و برنامه به همین دلیل کرش میکرد و از شما هم ممنونم ا ز اینکه کمک کردین نظرم اینه اگه روش درست و اصولی تر رو میدونید بگین تا بچه های اذیت نشن حداقل .... (7 سال پیش)
پاسخ به سوال 
مسعود کریمی نژاد  7 سال پیش
+2 0

در اینجا فرض می‌کنیم که دو اکتیویتی 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);
}

 

0 0
این روش شما هم null میفرسته متاسفانه.....!!!!!!!!! (5 سال پیش)
پاسخ به سوال 
Mohammad Babaei  5 سال پیش
0 0

public static YourFragment newInstance(Bundle bundle) {
YourFragment yourFragment = new YourFragment();
yourFragment.setArguments(bundle);

return yourFragment;
}

اکتیویتی:

 YourFragment yourFragment = YourFragment.newInstance(bundle);

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .