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

استفاده ار Reflection حل شد + کد کامل

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

سلام دوستان من در مورد پروژه Reflection سوالی دارم می خواستم بدونم چطور میشه از قسمت کلاس ui استاد فقط برای حذف قسمت findviewbyid استفاده کرد برای مثال کد استاد هست

 public class ReflectionActivity extends Activity {

    public class Ui extends HelperUi {

		public TextView txtTest1;
		public Button btnTest2;
		public CheckBox chkTest3;

        public Ui(View view) {
            parseUi(view);

			txtTest1.setText("Hello");
			btnTest2.setText("It's OK");
			chkTest3.setChecked(false);

        }
    }


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

        Ui ui = new Ui(getWindow().getDecorView());

    }
}

میخوام بشه مثل این اما شناسایی نمیشه فیلد ها یا nullpointer میده

 public class ReflectionActivity extends Activity {

    public class Ui extends HelperUi {

		public TextView txtTest1;
		public Button btnTest2;
		public CheckBox chkTest3;

        public Ui(View view) {
            parseUi(view);



        }
    }


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

        Ui ui = new Ui(getWindow().getDecorView());
		txtTest1.setText("Hello");
		btnTest2.setText("It's OK");
		chkTest3.setChecked(false);
در این حالت شناسایی نمیشن } }

یا

 public class ReflectionActivity extends Activity {
	public TextView txtTest1;
	public Button btnTest2;
	public CheckBox chkTest3;

	public class Ui extends HelperUi {

		public Ui(View view) {
			parseUi(view);
در این حالت nullpointer
		}
	}

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

		Ui ui = new Ui(getWindow().getDecorView());
		txtTest1.setText("Hello");
		btnTest2.setText("It's OK");
		chkTest3.setChecked(false);
	}
}

نظرات

کاشی زاده 10 سال پیش
شما یک متغیر از جنس کلاس UI دارید هر چیزی که میخواید مقدار دهی کنید میگید ui.textTest1.setText برای راحتی بیشتر میتونید ui رو به فیلد تبدیل کنید .
Ali 10 سال پیش
راه حل آقای کاشی زاده کافیه ولی با این حال اگه به پاسخ من توی این لینک هم یه نگاهی بندارید بد نیست.
احمد 10 سال پیش
ممنون مهندس اصلا حواسم نبود به این کار دستتون در نکنه ممنون علی جون

پاسخ‌ها 1

احمد 10 سال پیش

کد کلاس به صورت زیر شد

 package com.uncocoder.course.app.reflection;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;

public class ReflectionActivity extends Activity {

	public class Ui extends HelperUi {
		public TextView txtTest1;
		public Button btnTest2;
		public CheckBox chkTest3;

		public Ui(View view) {
			parseUi(view);
		}
	}

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

		Ui ui = new Ui(getWindow().getDecorView());
		ui.txtTest1.setText("Hello");
		ui.btnTest2.setText("It's OK");
		ui.chkTest3.setChecked(false);
	}
}

نظرات


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