رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

سوال : نوشتن یه تابع با یک متغییر برای همه buttoon ها


پست های پیشنهاد شده

دوستان کارم ضرب العجلیه منتظر جوابتون هستم---مممنون

سلام دوستان من کلی دکمه دارم که فقط باس از یه دستور پیروی کنه  و من یه تابع ساختم که توش آیدی دکمه متغییره رو باس بهش بدم اما یه جای کارش مشکل داره

	private void b ( int btn){	Button b =(Button)findViewById(R.id.btn //این متغییر که برای هر دکمه باید یک ایدی مشخص نوشته بشه) ;	b.setOnClickListener(new OnClickListener() {	@Override	public void onClick(View v) {		// TODO Auto-generated method stub	}});}

آیا باید اینجوری فراخوانیش کنم

b(btn1);// مثلا زمانی که بخوام دکمه ای با ایدی رو به رو فراخوانی کنم	b(btn2);b(btn3);b(btn4);

سوال بعدی اینکه فرق بین اینها چیه تو نت جستجو کردم حقیقتش درست متوجه نشدم

privait

privaite void

public void

public static

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اگرم می خواید واسه همه توابعتون یه تابع داشته باشن از تابع زیر استفاده کنید 

[shcode=java]

public void ClickItem(View v)

{

switch (v.getId()) {

case R.id.Button1:

//دستورات

break;

case R.id.Button2:

//دستورات

break;

.

.

.

}

}

[/shcode]

اگرم همه یه کار قراره انجام بدن هم تابع رو اینجوری بنویسین

[shcode=java]

public void ClickItem(View v)

{

//دستورات

}

[/shcode]

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

[shcode=java]

[/shcode]

[align=left]"android:onclick="ClickItem[/align]

[shcode=java]

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر
سوال بعدی اینکه فرق بین اینها چیه تو نت جستجو کردم حقیقتش درست متوجه نشدم

privait

privaite void

public void

public static

privait

یعنی یک محدوده ی خصوصی. مثلا شما وقتی یک متغیر یا یک متد یا پروپرتی رو در یک کلاس تعریف میکنید ، زمانی که بهش میگید محدوده ای private باشه یعنی حتی اگر از کلاس ارث برده شد یا از کلاس یک نمونه ساخته شد باز هم نمیتونید از خارج از کلاس بهش دسترسی داشته باشید

privaite void

همون تعریف قبلی برای متد هاست با این تفاوت که نوع خروجی تهی هست یعنی متد شما هیچی برنمیگردونه یا اصطلاحا چیزی return نمیکنه

public void

همون تعریف privaite void برای خروجیش رو در نظر بگید با این تفاوت که اگر متد رو به صورت عمومی یا public تعریف کنید میتونی پس از ایجاد نمونه از کلاس یا ارث بری به اون متد دسترسی داشته باشید

public static

اگر یک متد رو اینطوری تعریف بکنید یعنی هم سطح کلاس بوده و قبلا هم وارد رم شده و شما میتونید هربار با زدن نام کلاس و نقطه بهش دسترسی پیدا بکنید.

برای متغیر هم به همین معناست و مقدار این متغیر ذخیره میشه و شما میتونید هر بار بهش دسترسی داشته باشید و تغییرش بدید یا ازش استفاده کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون از پاسخگویی شما

ببنید منظورم اینه

الان من دوازده تا کلید با ایدی ها مختلف دارم که کارهمشون اینه که  برن به فقط تو یه صفحه مثلا

Search_Ch_Mah

 و یه مقدار خاص رو با خوشون ببرن ---من هی یه کد رو تکرار کردم و فقط مقدار کلمه ای که با خودشون میخوان ببرن رو تغییر دادم----برا همین میخام کد رو خلاصه کنم

protected void onCreate(Bundle savedInstanceState) {	super.onCreate(savedInstanceState);	setContentView(R.layout.maah);	 b1 =(Button)findViewById(R.id.btn1) ;	b1.setOnClickListener(new OnClickListener() {		@Override		public void onClick(View v) {			Intent intent = new Intent(Maah.this,Search_Ch_Mah.class);			intent.putExtra("text", "فروردین");			Maah.this.startActivity(intent);		}});			 b2 =(Button)findViewById(R.id.btn2) ;			b2.setOnClickListener(new OnClickListener() {				@Override				public void onClick(View v) {					Intent intent = new Intent(Maah.this,Search_Ch_Mah.class);					intent.putExtra("text", "اردیبهشت");					Maah.this.startActivity(intent);				}});			 b3 =(Button)findViewById(R.id.btn3) ;			b3.setOnClickListener(new OnClickListener() {				@Override				public void onClick(View v) {					Intent intent = new Intent(Maah.this,Search_Ch_Mah.class);					intent.putExtra("text", "خرداد");					Maah.this.startActivity(intent);				}});			 b4 =(Button)findViewById(R.id.btn4) ;			b4.setOnClickListener(new OnClickListener() {				@Override				public void onClick(View v) {					Intent intent = new Intent(Maah.this,Search_Ch_Mah.class);					intent.putExtra("text", "تیر");					Maah.this.startActivity(intent);				}});			 b5 =(Button)findViewById(R.id.btn5) ;			b5.setOnClickListener(new OnClickListener() {				@Override				public void onClick(View v) {					Intent intent = new Intent(Maah.this,Search_Ch_Mah.class);					intent.putExtra("text", "مرداد");					Maah.this.startActivity(intent);				}});			 b6 =(Button)findViewById(R.id.btn6) ;			b6.setOnClickListener(new OnClickListener() {				@Override				public void onClick(View v) {					Intent intent = new Intent(Maah.this,Search_Ch_Mah.class);					intent.putExtra("text", "شهریور");					Maah.this.startActivity(intent);				}});			 b7 =(Button)findViewById(R.id.btn7) ;			b7.setOnClickListener(new OnClickListener() {				@Override				public void onClick(View v) {					Intent intent = new Intent(Maah.this,Search_Ch_Mah.class);					intent.putExtra("text", "مهر");					Maah.this.startActivity(intent);				}});			 b8 =(Button)findViewById(R.id.btn8) ;			b8.setOnClickListener(new OnClickListener() {				@Override				public void onClick(View v) {					Intent intent = new Intent(Maah.this,Search_Ch_Mah.class);					intent.putExtra("text", "آبان");					Maah.this.startActivity(intent);				}});			 b9 =(Button)findViewById(R.id.btn9) ;			b9.setOnClickListener(new OnClickListener() {				@Override				public void onClick(View v) {					Intent intent = new Intent(Maah.this,Search_Ch_Mah.class);					intent.putExtra("text", "آذر");					Maah.this.startActivity(intent);				}});			 b10 =(Button)findViewById(R.id.btn10) ;			b10.setOnClickListener(new OnClickListener() {				@Override				public void onClick(View v) {					Intent intent= new Intent(Maah.this,Search_Ch_Mah.class);					intent.putExtra("text", "دی");					Maah.this.startActivity(intent);				}});			 b11 =(Button)findViewById(R.id.btn11) ;			b11.setOnClickListener(new OnClickListener() {				@Override				public void onClick(View v) {					Intent intent = new Intent(Maah.this,Search_Ch_Mah.class);					intent.putExtra("text", "بهمن");					Maah.this.startActivity(intent);				}});			 b12 =(Button)findViewById(R.id.btn12) ;			b12.setOnClickListener(new OnClickListener() {				@Override				public void onClick(View v) {					Intent intent = new Intent(Maah.this,Search_Ch_Mah.class);					intent.putExtra("text", "اسفند");					Maah.this.startActivity(intent);				}});}
لینک ارسال
به اشتراک گذاری در سایت های دیگر

من ی راه دیگ فک می کردم بشه امتحان کردم نشد اما خب اینم طول کد رو کم میکنه لازم هم نیس button ها رو تعریف کرد[shcode=java]

public void ClickItem1(View v)

{

Intent intent=new Intent(this,dd.class);

switch (v.getId()) {

case R.id.btn1:

  intent.putExtra("text","a");

break;

case R.id.btn2:

  intent.putExtra("text","b");

break;

case R.id.btn3:

  intent.putExtra("text","c");

break;

default:

break;

}

startActivity(intent);

}

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام ممنون از راهنماییتون----میشه آیدی یاهوتونو بدید آنلاین ازتون بپرسم آخه هی به مشکل بر میخورم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام ممنون از راهنماییتون----میشه آیدی یاهوتونو بدید آنلاین ازتون بپرسم آخه هی به مشکل بر میخورم

یراه بهتر

اسم ماه ها رو تو تگ مربوط ب دکمه ها بذارین بعد ازین تابع استفاده کنین

[shcode=java]

public void ClickItem1(View v)

{

Intent intent=new Intent(this,dd.class);

  intent.putExtra("text",v.getTag().toString());

startActivity(intent);

}

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

وقتی به هر کدوم از کلید ها اینو اضافه میکنم این ارور ظاهر میشه

"android:onclick="ClickItem

C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:97: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 21:22:26 - SangDarmaniii] [2015-01-28 21:22:26 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:106: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 21:22:26 - SangDarmaniii] [2015-01-28 21:23:29 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:42: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 21:23:29 - SangDarmaniii] [2015-01-28 21:23:29 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:52: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 21:23:29 - SangDarmaniii] [2015-01-28 21:23:29 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:61: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 21:23:29 - SangDarmaniii] [2015-01-28 21:23:29 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:70: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 21:23:29 - SangDarmaniii] [2015-01-28 21:23:29 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:79: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 21:23:29 - SangDarmaniii] [2015-01-28 21:23:29 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:88: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 21:23:29 - SangDarmaniii] [2015-01-28 21:23:29 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:97: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 21:23:29 - SangDarmaniii] [2015-01-28 21:23:29 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:106: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 21:23:29 - SangDarmaniii] 
لینک ارسال
به اشتراک گذاری در سایت های دیگر

این تابع رو باید خارج oncreate تعریف کنین

بعد توی فایل xml فقط tag و onclick رو بهش معرفی کینن

ی نمونه کد گذاشتم ببینین

aa.zip

aa.zip

لینک ارسال
به اشتراک گذاری در سایت های دیگر

این اطلاعات کلید تو فایل xml هستش الان دقیقا چی اضافه کنم-منظورتون از تگ چیه؟

                 android:id="@+id/btn1"

                 android:layout_width="wrap_content"

                 android:layout_height="wrap_content"

                 android:layout_marginTop="20dp"

                 android:background="@drawable/listitemfocus"

                 android:text="شناخت چاکرا"

                 android:textStyle="bold"

                  />

لینک ارسال
به اشتراک گذاری در سایت های دیگر
                              android:id="@+id/btn2"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:background="@drawable/listitemfocus"                android:text="چاکـرای  اول"                android:textStyle="bold"                 android:tag="چاکـرای  اول"                android:onclick="ClickItem"/>
package ir.tahaquran.SangDarmani;import android.app.Activity;public class Chakra extends Activity {public void ClickItem(View v){Intent intent=new Intent(Chakra.this,Search_Ch_Mah.class);   intent.putExtra("text",v.getTag().toString());startActivity(intent);}@Overrideprotected void onCreate(Bundle savedInstanceState) {	super.onCreate(savedInstanceState);	setContentView(R.layout.chakra);}}

بازم ارور میده اینم نمونه ارور

niii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:107: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:02:50 - SangDarmaniii] [2015-01-28 22:03:12 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:52: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:03:12 - SangDarmaniii] [2015-01-28 22:03:12 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:62: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:03:12 - SangDarmaniii] [2015-01-28 22:03:12 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:71: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:03:12 - SangDarmaniii] [2015-01-28 22:03:12 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:80: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:03:12 - SangDarmaniii] [2015-01-28 22:03:12 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:89: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:03:12 - SangDarmaniii] [2015-01-28 22:03:12 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:98: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:03:12 - SangDarmaniii] [2015-01-28 22:03:12 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:107: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:03:12 - SangDarmaniii] [2015-01-28 22:07:56 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:52: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:07:56 - SangDarmaniii] [2015-01-28 22:07:56 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:63: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:07:56 - SangDarmaniii] [2015-01-28 22:07:56 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:72: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:07:56 - SangDarmaniii] [2015-01-28 22:07:56 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:81: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:07:56 - SangDarmaniii] [2015-01-28 22:07:56 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:90: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:07:56 - SangDarmaniii] [2015-01-28 22:07:56 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:99: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:07:56 - SangDarmaniii] [2015-01-28 22:07:56 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:108: error: No resource identifier found for attribute 'onclick' in package 'android'[2015-01-28 22:07:56 - SangDarmaniii] 
لینک ارسال
به اشتراک گذاری در سایت های دیگر

این خطا رو میده

            android:id="@+id/img_titr_story"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:layout_below="@+id/img_titr_story"       android:layout_centerHorizontal="true"       android:src="@drawable/logo_maah"        android:onClick:"ClickItem"/>
[2015-01-28 22:30:56 - SangDarmaniii] C:\Users\ozon\Desktop\New folder (5)\New folder\booktest\res\layout\chakra.xml:19: error: Error parsing XML: not well-formed (invalid token)

اصلا

ClickItemزیرش قرمز--بجای سبز------با اون که اون متد رو خارج از oncriat گذاشتم

                              android:id="@+id/btn8"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:background="@drawable/listitemfocus"                android:text="چاکرای هفتم"                android:textStyle="bold"                 android:onClick="ClickItem"               />

ببخشید اصلا حواسم نبود = بزارم----------------------الان اون متد رو شناخت----مننننون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

وقتی می خوای از img به عنوان دکمه استفاده کنی باید این خط هم اضافه کنی

android:clickable="true"

اگ میتونین فایل رو پیوست کنین ببینم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

الان من میخوام تو یه اکتیویتی دیگه کلمه رو دریافت کنم و اگه مثلا اون کلمه گربه بود جای عکس اون قبلی عکس گربه رو براه همینجوی  تا اخر

Bundle ex = getIntent().getExtras();	Text = ex.getString("text");	ImageView img_titr =(ImageView) findViewById(R.id.img_titr_story);	img_titr.setImageResource(R.drawable.sangrize);		if(Text =="چاکرای اول"){		img_titr.setImageResource(R.drawable.cat1);	}	elseif(Text =="چاکرای دوم"){		img_titr.setImageResource(R.drawable.dog);		}}

میخوام از دستور سویچ استفاده کنم درست بلد نیستم از طرفی هم elseif رو هم خطلا میگیره--میشه راهنماییم کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...