دسترسی به ویو ها در فرگمنت
سلام
من تا حالا تجربه ی کاری با فرگمنت ها رو نداشتم
الان میخوام توی فرگمنت یک اسلایدر تصاویر بسازم ، تا اونجایی که سرچ کردم ویو هارو باید توی متد onActivityCreated تعریف و ازشون استفاده کنم.
اما الان که میخوام این کار رو کنم میبینم عبارت findViewById رو نداره
چجوری باید به ویوهام دسترسی داشته باشم؟
سلام دوست عزیز
اولا خیلی از شما ممنونم که با مطرح همچین سوالی منو وادار به یه سرچ کوچولو کردید و موفق شدم پاسخ این سوالو پیدا کنم . خیلی ممنونم
خب خیلی اسونه شما اول باید توی لی اوت مربوط به فرگمنتتون ویوویی که دوس دارید رو بذارید و براش ایدی انتخاب کنید (Button , TextView ,...)
مثل اکتیویتی . برای نمونه مثلا این دکمه
<Button
android:layout_width="150dp"
android:layout_height="80dp"
android:text="Go to Activity"
android:id="@+id/btn_activity"
android:layout_gravity="center"
android:gravity="center"
android:textColor="#020d16"/>
خب بعدش کلاس فرگمنت خودتون که از fragment مشتق میشه رو اینجوری کامل میکنید:
public class FragmentOne extends Fragment{
private Button btn_activity;
public FragmentOne(){
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_one, container, false);
btn_activity = (Button) rootView.findViewById(R.id.btn_activity);
btn_activity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/* Intent intent = new Intent(G.context , MainActivity.class);
startActivity(intent);*/
Toast.makeText(G.context ,"Activity Main" , Toast.LENGTH_SHORT).show();
}
});
return rootView;
}
}
خیلی راحت برای اون خط کد inflate که در واقع یه فرگمنت رو برمیگردونه یه view میسازیم و براش اسمی رو در نظر میگیرم مثلا اینجا (rootView )
خب حالا وقت اون میرسه که ویووی که توی لایه ی فرگمنت تون هست تعریف کنید و ایدیشو بهش بدین. فقط قبل از findViewById باید اسم view رو بذارید.
خب بعد اون اکشنی که قراره برای اون ویوو در نظر بگیرین رو مینویسین (من اینجا برای مثال یه Intent و یه Toast ) نوشتم . و در اخر view رو return کنید.
فقط دقت کنید که حتما کلاس اپ (G) رو درست کنید و یه COontext تعریف کنید و توی منیفست تعریف کنید.
کلاس G:
import android.app.Application;
import android.content.Context;
public class G extends Application {
public static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
}
تعریف در منیفست :
<application
android:name=".G"
و تمام...
امیدوارم مفید باشه. جاییش سوالی داشتین در خدمتم . موفق باشین
سلام من یک برنامه نویس تازه کارم و با فرگمنت خیلی مشکل داشتن مرسی از راهنمایی شما
import android.app.Application;
import android.content.Context;
public class G extends Application {
public static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
}
این کلاس واقعا به من کمک کرد
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .