بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
سوال در مورد Fragment ها به جای Activity ها(حل شد)
برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال
Spirit
11 سال پیش
+1
0
اولین خطا مربوط به متدی در Activity هست و اینجا کاربرد نداره پاک کنید.
برای خطای دوم rootView رو به عنوان آراگومان (ورودی) به متد initViewPager بدید و اونجا بدین صورت استفاده کنید ( مثل imgProduct ) :
rootView.findViewByID(...
برای خطای سوم از متد getActivity بجای this استفاده کنید.
برای خطای چهارم هم باز از متد getActivity استفاده کنید(البته مطمئن نیستم):
getActivity().getWindowManager(...
و در آخر آموزش فارسی هم کم و بیش موجود هست میتونید جستجو کنید "آموزش فرگمنت اندروید"
پاسخ به سوال
علی
11 سال پیش
0
0
public class HomeFragment extends Fragment{
private ViewPager adViewPager;
private LinearLayout pagerLayout;
private List<View> pageViews;
private ImageView[] imageViews;
private ImageView imageView;
private AdPageAdapter adapter;
private AtomicInteger atomicInteger = new AtomicInteger(0);
private boolean isContinue = true;
private Activity rootView;
public HomeFragment(){}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
final ImageView imgProduct = (ImageView) rootView.findViewById(R.id.imgProduct);
imgProduct.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ProductFragment nextFrag= new ProductFragment();
getFragmentManager().beginTransaction()
.replace(R.id.frame_container, nextFrag,null)
.addToBackStack(null)
.commit();
}
});
initViewPager();
return rootView;
}
private void initViewPager() {
//Gets the ViewPager parent container from the layout file
pagerLayout = (LinearLayout) rootView.findViewById(R.id.view_pager_content);
//Create ViewPager
adViewPager = new ViewPager(getActivity());
//Access to the screen pixel information
DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
//Based on the screen information set ViewPager advertising vessel width and height
adViewPager.setLayoutParams(new LayoutParams(dm.widthPixels, dm.heightPixels * 3 / 5));
//Set the ViewPager container to the parent container layout file
pagerLayout.addView(adViewPager);
initPageAdapter();
initCirclePoint();
adViewPager.setAdapter(adapter);
adViewPager.setOnPageChangeListener(new AdPageChangeListener());
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
if (isContinue) {
viewHandler.sendEmptyMessage(atomicInteger.get());
atomicOption();
}
}
}
}).start();
}
private void atomicOption() {
atomicInteger.incrementAndGet();
if (atomicInteger.get() > imageViews.length - 1) {
atomicInteger.getAndAdd(-5);
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
}
/*
* Every fixed time switched advertising column
*/
private final Handler viewHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
adViewPager.setCurrentItem(msg.what);
super.handleMessage(msg);
}
};
private void initPageAdapter() {
pageViews = new ArrayList<View>();
ImageView img1 = new ImageView(getActivity());
img1.setBackgroundResource(R.drawable.view_add_1);
pageViews.add(img1);
ImageView img2 = new ImageView(getActivity());
img2.setBackgroundResource(R.drawable.view_add_2);
pageViews.add(img2);
ImageView img3 = new ImageView(getActivity());
img3.setBackgroundResource(R.drawable.view_add_3);
pageViews.add(img3);
ImageView img4 = new ImageView(getActivity());
img4.setBackgroundResource(R.drawable.view_add_4);
pageViews.add(img4);
ImageView img5 = new ImageView(getActivity());
img5.setBackgroundResource(R.drawable.view_add_5);
pageViews.add(img5);
ImageView img6 = new ImageView(getActivity());
img6.setBackgroundResource(R.drawable.view_add_6);
pageViews.add(img6);
adapter = new AdPageAdapter(pageViews);
}
private void initCirclePoint(){
ViewGroup group = (ViewGroup) rootView.findViewById(R.id.viewGroup);
imageViews = new ImageView[pageViews.size()];
//Billboards dot Icon
for (int i = 0; i <pageViews.size(); i++) {
//Create a ImageView, and set the width and height. The object is put into the array
imageView = new ImageView(getActivity());
imageView.setLayoutParams(new LayoutParams(10,10));
imageViews[i] = imageView;
//The initial value, the default of zeroth selected
if (i == 0) {
imageViews[i]
.setBackgroundResource(R.drawable.point_focused);
} else {
imageViews[i]
.setBackgroundResource(R.drawable.point_unfocused);
}
//The dots into a layout
group.addView(imageViews[i]);
}
}
/**
* The ViewPager page change listener
*/
private final class AdPageChangeListener implements OnPageChangeListener {
/**
* Page scrolling when conditions change trigger
*/
@Override
public void onPageScrollStateChanged(int arg0) {
}
/**
* When the page scroll trigger
*/
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
/**
* When the page select trigger
*/
@Override
public void onPageSelected(int arg0) {
//Gets the current page is what page
atomicInteger.getAndSet(arg0);
//Re set origin set layout
for (int i = 0; i <imageViews.length; i++) {
imageViews[arg0]
.setBackgroundResource(R.drawable.point_focused);
if (arg0 != i) {
imageViews[i]
.setBackgroundResource(R.drawable.point_unfocused);
}
}
}
}
private final class AdPageAdapter extends PagerAdapter {
private List<View> views = null;
/**
* Initialization of the data source, i.e. View array
*/
public AdPageAdapter(List<View> views) {
this.views = views;
}
/**
* Delete set corresponding index from ViewPager View objects
*/
@Override
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView(views.get(position));
}
/**
* The number of ViewPager access
*/
@Override
public int getCount() {
return views.size();
}
/**
* From the access to the corresponding index View of elements in the collection, and added to the ViewPager
*/
@Override
public Object instantiateItem(View container, int position) {
((ViewPager) container).addView(views.get(position), 0);
return views.get(position);
}
/**
* The object ViewPager pages and instantiateItem will display the return correlation
* This method can be implemented
*/
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
}
خطا که واضح هست nullPointer - میمونه پیدا کردنش خط 77 - بعد هم پروژه ای که خود آدم بنویسه و بدونه چیکار داره میکنه راحت تر دیباگ میشه تا اینکه از sample بدین صورت استفاده کنیم (البته sample و اینجور چیزا برای استفاده هست و در اون شکی نیست) - الان من اینجا نمیدونم handleMessage و Message و AtomicInteger چی هستن و چی کاربردی دارن، قبلش میرم با اینا آشنا میشم تا بدونم این کدها چیکار دارن میکنن. (11 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .


