PDA

View Full Version : تشخیص باتن کلیک شده



mehran6764
جمعه 20 شهریور 1394, 15:39 عصر
من تازه وارد دنیای اندروید شدم و مبتدی ام ، این کد رو برای تشخیص دکمه کلیک شده نوشتم در صورتی که روی باتن 1 کلیک بشه روی دکمه پیغام this is my first program!
داخل textview قرار می گیره و در صورتی که روی باتن 2 کلیک بشه ، پیغام Thank you ، این روش کد نویسی برای رویدادها روش صحیحی هست ؟

کد layout :




<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World, MyActivity"
android:layout_weight="0.09" android:id="@+id/Txtmsg"/>
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/seekBar" android:layout_gravity="center_horizontal"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/btn1" android:layout_gravity="center_horizontal" android:layout_weight="0.09"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/Btn2" android:layout_gravity="center_horizontal"/>
</LinearLayout>






کد اکتویتی



package com.example.MyAndroidAppActivity;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class MyActivity extends Activity {
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
addListenerOnButt1();
addListenerOnButton2();
}


Button button;
public void addListenerOnButt1() {

button = (Button) findViewById(R.id.button1);

button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

TextView t = (TextView)findViewById(R.id.textView1);
t.setText("this is my first program!");


}

});

}
public void addListenerOnButton2() {

button = (Button) findViewById(R.id.button2);

button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

TextView t = (TextView)findViewById(R.id.textView1);
t.setText("Thank you");


}

});

}
}

mehran6764
جمعه 20 شهریور 1394, 15:52 عصر
تو نت این کد رو دیدم ، این کد هم برای تشخیص باتن کلیک شده اس ، اما متاسفانه نتونستم ازش استفاده کنم



public void onClick(View view) {
switch (view.getId()) {
case R.id.btn1:
// کار مورد نظر رو انجام بده
break;
case R.id.btn2:
// کار مورد نظر رو انجام بده
break;
...
}
}

raha_jon
جمعه 20 شهریور 1394, 17:06 عصر
سلام جاهای که نوشته "کار مورد نظر رو انجام بده "دقیقا مثل آن کلیک لیستنر عمل می کنه و هر کدی قرار بدی اونو اجرا می کنه .اینا هم R.id.btn1 آیدی باتونه

mehran6764
جمعه 20 شهریور 1394, 18:29 عصر
سلام جاهای که نوشته "کار مورد نظر رو انجام بده "دقیقا مثل آن کلیک لیستنر عمل می کنه و هر کدی قرار بدی اونو اجرا می کنه .اینا هم R.id.btn1 آیدی باتونه

ممنون از شما ؛ اما عرض بنده رو خوب متوجه نشدین ، سوالم اینکه چطور از متد پایین تو اکتویتی ام استفاده کنم ،
اگر دقت کنید من اومدم برای هر باتن یک متد کلیک تعریف کردم ، اما با کد پایین فقط یک متد نیاز داریم .
اصلا اجازه بدین ساده بپرسم ، اگر شما تو برنامه اتون چند برنامه داشته باشین و فقط بخواین تشخیص بدین کدوم باتن کلیک شده ، چه کدی
می نویسد؟

raha_jon
جمعه 20 شهریور 1394, 19:09 عصر
من متوجه حرف شما نمی شم ،متاسفانه
اما اینو با کد پایین نوشتم امید وارم بدرتون بخوره.

Button button = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);



OnClickListener clickListener = new OnClickListener() {

@Override
public void onClick(View arg0) {

switch (arg0.getId()) {
case R.id.button1:
yourmethod1();
break;
case R.id.button2:
yourmethod2();
break;
}


}
};


button.setOnClickListener(clickListener);
button2.setOnClickListener(clickListener);

mehran6764
جمعه 20 شهریور 1394, 20:30 عصر
من متوجه حرف شما نمی شم ،متاسفانه
اما اینو با کد پایین نوشتم امید وارم بدرتون بخوره.

Button button = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);



OnClickListener clickListener = new OnClickListener() {

@Override
public void onClick(View arg0) {

switch (arg0.getId()) {
case R.id.button1:
yourmethod1();
break;
case R.id.button2:
yourmethod2();
break;
}


}
};


button.setOnClickListener(clickListener);
button2.setOnClickListener(clickListener);



تشکر مجدد بابت زحمتی که کشدی ، اما دادا به این صورت نوشتم با خطا مواجه شدم ، فک کنم کد رو ببنید متوجه میشین که منظور من چیه
ببخشین ننونستم واضح تر بیان کنم ، اگر ممکنه اکتیویتی این کد رو کامل بهم بدین تا من یاد بگیرم



package com.example.MyAndroidAppActivity;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class MyActivity extends Activity {
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.btn1);
Button button2 = (Button) findViewById(R.id.Btn2);
button.setOnClickListener(clickListener);
button2.setOnClickListener(clickListener);

}


;
TextView t = (TextView)findViewById(R.id.Txtmsg);
OnClickListener clickListener = new OnClickListener() {

@Override
public void onClick(View arg0) {

switch (arg0.getId()) {
case R.id.btn1:

t.setText("Thank you");
break;
case R.id.Btn2:


t.setText("Thank you");

break;
}


}
};

}

raha_jon
شنبه 21 شهریور 1394, 06:49 صبح
من دیگه کدو نوشتم .از کد من استفاده کنید .

ali_khodayar
شنبه 21 شهریور 1394, 15:50 عصر
راهی که به نظر من میرسه اینه که هرچند تا دکمه که داری مهم نیست ، برای تمامی دکمه ها یک رویداد واحد OnClick تعریف کن ، بعد توی کلاس برنامت متد رو اینطوری پیاده سازی کن

1- ورودی تابع View باشه
2- View رو به Button تبدیل کن
3- متنش رو بگیر و توی یه متغییر قرار بده
4- با یه شرط ( Switch) بگو اگر متنش مثلأ 1 بود پس روی دکمه شماره 1 کلیک شده اگر 2 بود پس روی دکمه 2 کلیک شده و ...

ali_khodayar
شنبه 21 شهریور 1394, 15:53 عصر
من از همین روش برای نوشتن یک ماشین حساب استفاده کردم



public void MathCalc(View view)
{
Button operator=(Button) view;
calc opr = null;
switch (operator.getText().toString())
{
case "*":
opr=new ZARB();
break;
case "-":
opr=new MINES();
break;
case "+":
opr=new SUM();
break;
}

}

بیتا حکمت
شنبه 21 شهریور 1394, 20:45 عصر
من از همین روش برای نوشتن یک ماشین حساب استفاده کردم



public void MathCalc(View view)
{
Button operator=(Button) view;
calc opr = null;
switch (operator.getText().toString())
{
case "*":
opr=new ZARB();
break;
case "-":
opr=new MINES();
break;
case "+":
opr=new SUM();
break;
}

}


سلام ، من مشکلی مشابه مشکل استارتر دارم ، الان من رویداد شما رو کپی کردم ، ولی موقع که میخوام تو برنامه صداش بزنم ، این خط خطا می ده




MathCalc();

ali_khodayar
یک شنبه 22 شهریور 1394, 08:15 صبح
سلام ، من مشکلی مشابه مشکل استارتر دارم ، الان من رویداد شما رو کپی کردم ، ولی موقع که میخوام تو برنامه صداش بزنم ، این خط خطا می ده




1
2
3
4

MathCalc();








سلام

رویداد OnClick رو به نام MathCalc توی فایل xml تعریف کردید؟

بیتا حکمت
یک شنبه 22 شهریور 1394, 08:19 صبح
سلام

رویداد OnClick رو به نام MathCalc توی فایل xml تعریف کردید؟

سلام ، ممنون ، چند ساعت پیش انجامش دادم حل شد
از 5 صبح تا الان هی سرج می کردم ، کد تست می کردم

ali_khodayar
یک شنبه 22 شهریور 1394, 09:16 صبح
آفرین به این پشت کار
موفق باشید