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

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

احمد  8 سال پیش  8 سال پیش
0 0

سلام دوستان من در مورد پروژه 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);
	}
}
+2 0
شما یک متغیر از جنس کلاس UI دارید هر چیزی که میخواید مقدار دهی کنید میگید ui.textTest1.setText برای راحتی بیشتر میتونید ui رو به فیلد تبدیل کنید . (8 سال پیش)
+1 0
راه حل آقای کاشی زاده کافیه ولی با این حال اگه به پاسخ من توی این لینک هم یه نگاهی بندارید بد نیست. (8 سال پیش)
0 0
ممنون مهندس اصلا حواسم نبود به این کار دستتون در نکنه ممنون علی جون (8 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
احمد  8 سال پیش
+1 0

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

 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);
	}
}

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