ورود

View Full Version : چطور میتوان در onCreateView یک Fragment ٬ TextViewی موجود در Fragment دیگر را مقداردهی کرد؟



sahandsamaneh
یک شنبه 06 اسفند 1391, 08:21 صبح
من در layout اصلی 3 تا FrameLayout دارم که در هرکدام یک Fragment جای میگیرد(
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/top_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/centerfragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@+id/bottomfragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

3تا کلاس Fragment هم دارم که هر کدام یک layout جداگانه دارد
من میخواهم در onCreateView یکی از این Fragmentها بلافاصله پس از مقداردهی یک EditText متن TextViewی موجود در Fragment دیگر از طریق setText مقداردهی شود
برای این منظور با استفاده از کد زیر آن TextView را مقداردهی کرده ام
String str=editText.getText();
View v= inflater.inflate(R.layout.center_frame, null);
TextView enterTxtDate=(TextView) v.findViewById(R.id.Txt_Date);
enterTxtDate.setText(str);
اما تغییر ی در مقدار TextView در زمان اجرا مشاهده نمی شود!!!!

در سایت stackoverflow گفته شده باید View return در onCreateView نوشته شود تا تغییرات اعمال گردد اما در اینجا که در onCreateView باید View مربوط به همین Fragment جاری را return کنم نه view مربوط به Fragment دوم را

آیا کسی راه حل این مشکل را میداند؟
در اندروید 3 با استفاده از FragmentActivity و update میشود کاری انجام داد اما در اندروید4 چیزی پیدا نکردم

mahdi1373
شنبه 12 اسفند 1391, 23:40 عصر
getActivity().findViewById(YOUR_ID);



البته باید مطمئن بشی که اون فرگمنتی که می خوای به text view داخلس دسترسی پیدا کنی، قبل از این فرگمنت ساخته شده...

hamed_hossani
پنج شنبه 19 تیر 1393, 11:22 صبح
سلام
در کد صفحه مربوط به لایوت .item_detail_contaner می نویسیم.

View rootView = inflater.inflate(R.layout.fragment_item_detail,
container, false);
((TextView) rootView.findViewById(R.id.item_detail)).setText(m Item.content);