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

ظاهر شدن یک صفحه خالی به جای فرگمنت

هادی بی غم  8 سال پیش  8 سال پیش
0 0

سلام دوستان من 3  آموزش ایجاد فرگمنت انجام دادم که هر 3 بار به جای فرگمنت یک صفحه کاملا خالی و سفید نمایش میده 

علتش چی می تونه باشه دوستان ؟

 

لایه مربوط به فرگمنت

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F7F7F7"
android:gravity="center"
android:orientation="vertical">


<ImageView
android:src="@drawable/ax2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView" />

<Button
android:text="Click Me penguan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnSimpleFragPenguan"
android:layout_alignParentBottom="false"
android:background="#6ddd"
android:layout_centerInParent="true" />
</RelativeLayout>

لایه اکتیویتی که فرگمنت داخلش باید نمایش داده بشه

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center"
android:background="#282B2E"
android:id="@+id/container">

</LinearLayout>

کلاس فرگمنت


public class SimpleFragmentActivity extends EnhancedActivity {

@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.activity_simple_fragment);

if (savedInstanceState==null){
getSupportFragmentManager().beginTransaction().add(R.id.container,new PlaceholderFragment()).commit();
}
}

public static class PlaceholderFragment extends Fragment{
public PlaceholderFragment(){

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_simple,container,false);

Button btnClickPenguan = (Button) rootView.findViewById(R.id.btnSimpleFragPenguan);

btnClickPenguan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(),"You Click ME ",Toast.LENGTH_LONG).show();
}
});
return rootView;
}



}


}

کلاس و لایه اصلی

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center"
android:background="#282B2E"
android:id="@+id/container">

<Button
android:text="Simple Fragment"
android:layout_width="match_parent"
android:layout_height="35dp"
android:id="@+id/btnSimpleFragment"
android:background="@drawable/gray_button"
android:textStyle="bold"
android:textSize="15sp"
android:textColor="#fff"
android:layout_marginBottom="30dp"
android:onClick="simple" />


</LinearLayout>

----------------------------------------

 public class MainActivity extends EnhancedActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void simple(View v){
Intent intent= new Intent(getApplicationContext(), SimpleFragmentActivity.class);
startActivity(intent);
}



}
 برای این سوال 3 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
Amir  8 سال پیش
+1 0

کلاس SimpleFragmentActivity رو باید از FragmentActivity اکستندز کنید.

0 0
انجام دادم مشکل حل نشد ! (8 سال پیش)
+1 0
توی اکتیویتیت یک framlayout بذار بهش آی دی بده و فرگمنتت رو با اون replace کن.فریم لایوت رو داخل لایه اصلیت بذار (8 سال پیش)
+1 0
این لینک رو هم ببین. من از این لینک فرگمنت رو یاد گرفتم و هیچ مشکلی هم ندارم. (8 سال پیش)
0 0
دوستان مرسی از لطفتون (8 سال پیش)
0 0
Nin عزیز لینکی که معرفی کردی خیلی مفید بود ، متشکرم (8 سال پیش)
پاسخ به سوال 
یاسر   8 سال پیش
+2 0

 پاسخ صحیح

طبق این آموزش پیش برو

این لایه اصلی هست activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:orientation="vertical"
	android:gravity="center"
	android:background="#282B2E">

	    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:id="@+id/container"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"/>
</LinearLayout>

توی ActivityMain.java هم از این کد استفاده کن (حتما از کلاس Fragment v4 استفاده کن)

 Fragment fragment = new YourFragment();
          FragmentManager fragmentManager = getSupportFragmentManager();
          fragmentManager.beginTransaction()
            .replace(R.id.container, fragment)
.addToBackStack(null) .commit(); fragmentManager.executePendingTransactions();

حالا میتونی بجای YourFragment از فرگمنت خودت استفاده کنی مثل این

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class YourFragment extends Fragment {
	@Override
	public void onCreate(@Nullable Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}

	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		return inflater.inflate(R.layout.your_fragment_layout, container,false);	
	}
}

 

0 0
یاسر جان تشکر از پاسختون ، میشه علت اینکه باید حتما از Fragment v4 استفاده کنیم بگید ؟ واسم سوال شده چون الان با این کار نمی کنم اما خیلی تمیز داره کار میکنه البته مجبور شدم بخاطر متد getFragmentManager (8 سال پیش)
0 0
این متد getFragmentManager اینو Fragment v4 نمیشناسه (8 سال پیش)
+1 0
اجباری برای استفاده از Fragment v4 نیست. اما توی بعضی شرایط خاص نیاز به Fragment v4 دارید که اگه براتون پیش نیومده نیازی نیست استفاده کنید (8 سال پیش)
پاسخ به سوال 
nasiri  8 سال پیش
+1 0

برای هر فایل xml که به عنوان یک page در نظر دارین باید یک کلاس اختصاصی داشنه باشن که از فرگمنت اکستنز بشه.

توی tabها و منوهای اسلایدی بکار میبرن.

0 0
ممنونم از پاسختون (8 سال پیش)

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