بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

اشکال ! طراحی Custom view ساده

مدیریت گفتگو
mahdar 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام   دوستان
وقتتون بخیر

توی اموزشی که اقای کاشی زاده ارائه دادن (custom_view_1)دقیقه 12 ، وقتی من  custom که طراحی کردم میندازم داخل لایه main
چیزی نشون نمیده !!! حتی وقتی اجرا میگیرم همینطور!
چرا؟
تشکر از حضورتون

 

نظرات

Reza 10 سال پیش
سلام ، CustomView ای که ساخته میشه ، در متد initializer ، یه لایه xml رو inflate میکنه . آیا اون لایه رو ساختید ؟ ( در آموزش استاد این لایه شامل یه TextView و دو Button هست و نام فایل custom_view.xml هست ) .
mahdar 10 سال پیش
سلام ، بله اونو ساختم ! بدون هیچ مشکلی ایا میشه مشکل از ایکیلپس باشه !
Reza 10 سال پیش
نمیدونم ، شاید ! لایه ای که ساختین داخل main نشون داده میشه ؟ و فقط در CustomView نشون نمیده ؟!
Ali 10 سال پیش
سلام لطفا کدی که نوشتین رو تو سوالتون بیارین .شاید مشکل از کدتون باشه.
mahdar 10 سال پیش
دقیقا همینطوره ک میگید.
mahdar 10 سال پیش
سلام اینم کد

پاسخ‌ها 3

mahdar 10 سال پیش

package com.example.custom_view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class Custom  extends LinearLayout{

   

    public Custom(Context context, AttributeSet attrs) {
        super(context, attrs);
       
    }

    public Custom(Context context) {
        super(context);
            initaliezr(context);
    }


        private void initaliezr( Context context){
       
            if(isInEditMode()){
            return;
                            }
                           
   
            LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   
        View customView = inflater.inflate(R.layout.custom_view,this);
        final TextView txtCustom_View=(TextView)customView.findViewById(R.id.txtCustom_View);
        Button btn_ok=(Button)customView.findViewById(R.id.btn_ok);
        Button btn_cancel=(Button)customView.findViewById(R.id.btn_cancel);
       
       
        btn_cancel.setOnClickListener( new OnClickListener() {
           
            @Override
            public void onClick(View arg0) {
               
                txtCustom_View.setText(" Clilcke On Cancel Button ");
            }
        });
       
        btn_ok.setOnClickListener( new OnClickListener() {
           
            @Override
            public void onClick(View arg0) {
                txtCustom_View.setText(" Clilck On Ok Button ");       
               
            }
        });
    }
   
}

نظرات

احمد 10 سال پیش
کد را داخل تگ کد قرار بدین و یک بار eclipse را ببند و باز کن اگه ویو درست باشه نشون میده
Reza 10 سال پیش
متد initaliezr رو در تمام Constructor ها وارد کنید ببینید درست میشه .
mahdar 10 سال پیش
رضا نفهمیدم چی میگی ،مبتدیم . !Constructor
Ali 10 سال پیش
تو Constructor اولی متد initaliezr رو وارد نکردی.
mahdar 10 سال پیش
علی میشه کدی ویرایش کنی برام بفرستی منظورم از Constructor نمیفهمم مرسی
Reza 10 سال پیش
Constructor یعنی سازنده کلاس و دقیقا همنام کلاسه . وقتی یک شی از یه کلاس میسازی سازنده اون کلاس به طور اتوماتیک فراخوانی میشه و کارش اینه که فیلدهای اون کلاس رو برای اون شی مقدار دهی میکنه . کلاس شما دو Constructor داره ( public Custom() ) که در اولی initaliezr رو ننوشتید .
Reza 10 سال پیش
ویدیوهای استاد رو با دقت ببینید . ببینید متد initaliezr که میسازن ، کجاها کپی میکنن .
Ali 10 سال پیش

 

به این Constructor  که در ابتدای کلاست نوشتی 

  public Custom(Context context, AttributeSet attrs) {
        super(context, attrs);
        

    }

 

متد initaliezr  اضافه کن .

یعنی : 

 public Custom(Context context, AttributeSet attrs) {
        super(context, attrs);
        initaliezr(context);

    }

نظرات

mahdar 10 سال پیش

مرسی از همه ی دوستان مشکل همین بود برطرف شد
تشکر :))

نظرات


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