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

سوال در مورد Fragment ها به جای Activity ها(حل شد)

علی  11 سال پیش  11 سال پیش
0 0

با سلام:

من کد های که در یک پروژه ی دیگه در Activity داشتم آوردم داخل Fragment که در Navigation Drawer هست. حالا این ارور ها رو میده . کلا ساختار این فرگمنت ها با اکتیویتی ها فرق داره. و یه سوال دیگه : intent که برای رفتن به یک Activity دیگه داریم در این فرگمنت جایگزینش چیه؟

 
 
 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
علی  11 سال پیش
0 0

پاسخ به سوال 
Spirit  11 سال پیش
+1 0

اولین خطا مربوط به متدی در Activity هست و اینجا کاربرد نداره پاک کنید.

برای خطای دوم rootView رو به عنوان آراگومان (ورودی) به متد initViewPager بدید و اونجا بدین صورت استفاده کنید ( مثل imgProduct ) :

 rootView.findViewByID(...

برای خطای سوم از متد getActivity بجای this استفاده کنید.

برای خطای چهارم هم باز از متد getActivity استفاده کنید(البته مطمئن نیستم):

 getActivity().getWindowManager(...

و در آخر آموزش فارسی هم کم و بیش موجود هست میتونید جستجو کنید "آموزش فرگمنت اندروید"

0 0
اگه درست فهمیده باشم همین جوری که گفتید گذاشتم ولی تا برنامه اجرا میشه میاد بیرون (11 سال پیش)
پاسخ به سوال 
علی  11 سال پیش
0 0

پاسخ به سوال 
علی  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;  
    }  
}
	
	
        

      
   
	
}

 

0 0
من الان extends کردم Fragment . حالا به جای .()getActivity نباید یه چیز دیگه باشه ؟ (11 سال پیش)
+1 0
متد getActivity تنها مربوط به Fragment هست، جای دیگه ای ندیدم استفاده بشه. (11 سال پیش)
0 0
خوب این ارور مربوط به چی هستش؟ من یه ViewPager داشتم آوردم داخل فرگمنت. از ظهر نفهمیدم مشکل اینو (11 سال پیش)
0 0
آقا یعنی هیچ راهی نیست این مشکل ما حل بشه؟ (11 سال پیش)
+1 0
خطا که واضح هست nullPointer - میمونه پیدا کردنش خط 77 - بعد هم پروژه ای که خود آدم بنویسه و بدونه چیکار داره میکنه راحت تر دیباگ میشه تا اینکه از sample بدین صورت استفاده کنیم (البته sample و اینجور چیزا برای استفاده هست و در اون شکی نیست) - الان من اینجا نمیدونم handleMessage و Message و AtomicInteger چی هستن و چی کاربردی دارن، قبلش میرم با اینا آشنا میشم تا بدونم این کدها چیکار دارن میکنن. (11 سال پیش)

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