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

انتقال اطلاعات از یک کلاس به کلاس اصلی 

mosafer  10 سال پیش  10 سال پیش
0 0

سلام 

من میخوام از یک کلاس که extend شده از ImageView هست اطلاعاتی رو ذخیره و در کلاس اصلیم که extend شده از Activity هست اون اطلاعات رو استخراج کنم.

آیا میشه از shared prefrence  استفاده کرد!!؟؟؟؟

من این کاردو کردم ولی باز نشد!!!

حالا از این روش استفاده کردم....

 public class DrawingBoard extends ImageView {

    private static final String str = null;
    Paint                       linePaint;
    boolean                     mustDraw;
    public static float         x1;
    public static float         x2;
    public static float         y1;
    public static float         y2;
    public SharedPreferences    shp;


    public DrawingBoard(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initialize();
    }


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


    public DrawingBoard(Context context) {
        super(context);
        initialize();
    }


    //===========================================================================
    private void initialize() {

        linePaint = new Paint();
        linePaint.setAntiAlias(true);
        linePaint.setColor(Color.DKGRAY);
        linePaint.setStrokeWidth(3);
    }


    //===========================================================================

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if (mustDraw) {
            canvas.drawLine(x1, y1, x2, y2, linePaint);
        }
    }


    //===========================================================================

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {

            case MotionEvent.ACTION_DOWN:

                mustDraw = true;
                x1 = event.getX();
                y1 = event.getY();

                break;

            case MotionEvent.ACTION_MOVE:

                x2 = event.getX();
                y2 = event.getY();

                invalidate();
             
                break;

            case MotionEvent.ACTION_UP:

                mustDraw = false;

                invalidate();
                break;
        }
        return true;
    }

                  ///////////////////////////////////////////////////من خواستم با چهار متد این اطلاعات رو به کلاس اصلیم پاس بدم 
    public float getx1() {
        return x1;

    }


    public float getx2() {
        return x2;

    }


    public float gety1() {
        return y1;

    }


    public float gety2() {
        return y1;

    }

}





اینم کد کلاس اصلیم ولی خب جوابی نگرفتم..

drawingBoard = new DrawingBoard(ActivityAnalyze.this); String strX1 = String.valueOf(drawingBoard.getx1()); String strX2 = String.valueOf(drawingBoard.getx2()); String strY1 = String.valueOf(drawingBoard.gety1()); String strY2 = String.valueOf(drawingBoard.gety2()); txtx1 = (TextView) findViewById(R.id.nax); txtx2 = (TextView) findViewById(R.id.x2); txty1 = (TextView) findViewById(R.id.y1); txty2 = (TextView) findViewById(R.id.y2); txtx1.setText(strX1); txtx2.setText(strX2); txty1.setText(strY1); txty2.setText(strY2);


 لطفا رانماییم کنید ممنون میشم..
0 0
سلام. آقا من هیچکارم اینجا، ولی خداییش این چه مدل انتخاب عنوان برای سواله !؟ برای و دیگران که فرقی نمینه، رد میشیم میریم... ولی برای خودتون خوب نیست چون ممکنه یکی جواب سوالتون رو بلد باشه ولی با خوندن عنوان متوجه سوال شما نشه و اصلا وارد تاپیکتون نشه. درضمن فکر میکنم اصلا به شیر پرفرنس نیاز نداردید. همون متد خالی باید کارتون رو راه بندازه. (من خودم چون هنوز خوب متد رو یاد نگرفتم بیشتر از این نمیتونم راهنمایی کنم. نمیشد بجای String strX1 = String.valueOf(drawingBoard.getx1()); بنویسید String strX1 = StringdrawingBoard.getx1; ؟ (10 سال پیش)
0 0
سلام واااااای اصلا حواسم نبود راست میگی!!!!!!!!!! بازم ممنون که بهم گفتی.. (10 سال پیش)
0 0
String strX1 = String.valueOf(drawingBoard.getx1()); این خط کد مقدار متد getX1 از نوع float رو به نوع string تبدیل میکنه(casting) (10 سال پیش)
0 0
ببینید، من در اینجور مواقع از لوگ استفاده میکنم تا ببینم کجای کار اطلعات متغیرها درست نیست و منتقل نمیشه. مثلا شما در کلاس اصلیتون بعد از اینکه از متد استفاده کردید، با یک لوگ مقادیر گیت ها رو بررسی کنید تا ببینید یک وقت مقدارشون نال یا 0 یا... نباشه. خیلی وقت ها آدم فکر میکنه همه چیز درسته ولی بعد از لوگ گرفتن جزئیات میبینه یه جای کار اطلاعات منتقل نمیشه و متوجه میشه مشکل از کجاست. (10 سال پیش)
0 0
خب من یادم رفته کارکردشو... میشه یه راهنمایی کنید، ممنون میشم. (10 سال پیش)
0 0
اگر میخای یه سری اطلاعات رو به یه اکتیویتی دیگه بفرستی خب استانداردش اینه که از putExtra استفاده کنید ولی خب در اینجا شما هیچ مقداری رو برای x1,x2,y1,y2 در متد مربوط به خودش مقداردهی نکردین و در خارج از بلاک مربوطه مقداردهی کردین پس به همین علت صفر رو برمیگردونه ! (10 سال پیش)
0 0
ممنون میثم جان درستش کردم.. لینک جوابمو پایین گذاشتم. putExtra برای ارسال اطلاعات از یه اکتیویتی به اکتیویتی دیگس. ولی من میخواستم x1,x2,y1,y2 که چهار متغیر در کلاس DrawingBoard extends ImageView بودن، که به لمس صفحه مقادیرشو تغییر کنه و این مقادیر رو در اکتیویتی اصلیم بگیره و نمایش بده. که خدارو شکر تا این ساعت نشستم و بلاخره درست شد. (10 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
alfredo  10 سال پیش
0 0

خوب، شما هرجا خواستی ببینی الان متغیرت چه مقداری داخلش هست، خط بعد از متغیرت بنویس

 Log.i("Log", نام متغیرتون);

اگه به نام متغیرتون ایراد گرفت، بعد از نام متغیرتون یدونه ""+ بنویسید درست میشه. حتی میتونید قبل از نام متغیرتون اسمش رو هم بنویسید که وقتی دارید توی لوگ کت مقادیر لوگ هارو نگاه میکنید، باهم اشتباه نگیریدشون. اینطوری:

  Log.i("Log",   نام فلان متغیر من که توی فلان اکتیویتی هست اینه : " + نام متغیرتون");
 
0 0
خب درسته.. در Text مربوطه 0 برمیگردونه.. خب حالا باید چکار کنم؟؟؟؟ وقتی با کلاس تاچ خطی میکشم چطور توی کلاس اصلی به xوy دسترسی داشته باشم؟ (10 سال پیش)
0 0
والا من بلد نیستم، از دوستان دیگه تقاضا میکنم جواب شما رو بدن ! (10 سال پیش)
0 0
بازم ممنون برای وقتی که برام گذاشتی.. (10 سال پیش)
پاسخ به سوال 
mosafer  10 سال پیش
0 0

واقعا کسی نیست راهنماییم کنه..

خیلی به این موضوع نیاز دارم ...

چکار کنم دیگران این تایپ ببینن شاید کسی تونست کمکم کنه؟؟!

پاسخ به سوال 
mosafer  10 سال پیش
+1 0

خدارو شکر درست شد...

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

http://stackoverflow.com/questions/13323880/pass-data-from-class-to-activity


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