Radio Buttons
سلام دوستان: فرض کنید دو تا اکتیویتی داریم که در اولی یک رادیو گروپ داریم که درونش دوتا Radio Button قرار داده ایم حال می خواهیم بسته به کلیک شدن برروی یکی ازRadio Buttons ها که مقدار متغیر g1 تغیر می کند.مقدار g1 در اکتیویتی دوم نمایش داده شود.
بنده متغیر g1 رو به اکتیویتی دوم بعد از اجرای کدهای زیر انتقال می دهم اما تغییری اتفاق نمی افتد.
RadioButton rb1 = (RadioButton) findViewById(R.id.rb1);
RadioButton rb2 = (RadioButton) findViewById(R.id.rb2);
if (rb1.isChecked())
g1 = 1;
if (rb2.isChecked())
g1 = 2;
یک متغیر Flag تعریف کنید، زمانی که در اکتیویتی اول یکی از RadioButton ها کلیک میشه Flag رو به مقدار دلخواه تغییر بدید و ارسال کنید، در اکتیویتی دوم در onCreate مقدار Flag رو دریافت کنید، اگر نیازی هست که بدونید کدوم انتخاب شده بوده، با یک Switch Case مقدار انتخابی رو بدست بیارید.
int flag;
rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if{isisChecked){
flag = 1;
}
}
});
rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if{isisChecked){
flag = 2;
}
}
});
و برای ارسال کد زیر رو بنویسید.
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("FLAG",flag);
FirstActivity.this.startActivity(intent);
حالا در اکتیویتی دوم مقدار Flag رو در onCreate بگیرید.
int flag;
try { Bundle extras = getIntent().getExtras(); if (extras != null) { flag = extras.getInt("FLAG"); } } catch (Exception e) {}
اینجا اگر میخواید متغیرتون رو مقایسه کنید میتونید یک if یا یک switch تعریف کنید که بفهمید چه چیزی انتخاب شده
دوست عزیز ممنون ولی مشکل من حل نشد.
در اکتیویتی تنظیمات چند تا رادیو باتن تعریف کردم که می خوام با این ها کاربر بتونه سایز متن رو تغییر بده:
RadioButton rb1 = (RadioButton) findViewById(R.id.rb1);
RadioButton rb2 = (RadioButton) findViewById(R.id.rb2);
rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { g1 = 1; intent.putExtra("g1", g1);
} } });
rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { g1 = 2; intent.putExtra("g1", g1);
} } });
در اکتیویتی دوم هم که دو تا تکست ویوو دارم می خوام برحسب g1 که از اکتیویتی اول به این اکتیویتی فرستاده می شود سایز متن رو تغییر بدم اما هیچ تغییری اتفاق نمی افتد:
Bundle extras1 = getIntent().getExtras();
if (extras1 != null) {
g2 = extras1.getInt("g1");
}
switch (g2) {
case 1: {
txtshow1.setTextSize(11);
txtshow2.setTextSize(10);
break;
}
case 2: {
txtshow1.setTextSize(15);
txtshow2.setTextSize(14);
break;
}
}
برای ست کردن سایز تکست از:
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
استفاده کنید و سایز هاتون رو در dimen قرار بدید و از همونجا سایز رو به صورت زیر بخونید
int size = (int) (currentActivity.getResources().getDimension(R.dimen.small_size));
در صورتی که با dimen ها کار نکردید هم توی فولدر res در فولدر values فایل dimen.xml رو باز کنید و سایز ها رو به صورت زیر تعریف کنید:
<dimen name="small_size">12sp</dimen>
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .