如果您想了解Android的一个OnClick方法有多个按钮?的相关知识,那么本文是一篇不可错过的文章,我们将对android中onclick进行全面详尽的解释,并且为您提供关于AndroidClic
如果您想了解Android的一个OnClick方法有多个按钮?的相关知识,那么本文是一篇不可错过的文章,我们将对android中onclick进行全面详尽的解释,并且为您提供关于Android ClickableSpan 没有调用 onClick、android imageButton onClick方法没有调用、Android onClick 按钮单击事件 四种常用写法、Android onClick按钮单击事件的四种常用写法的有价值的信息。
本文目录一览:- Android的一个OnClick方法有多个按钮?(android中onclick)
- Android ClickableSpan 没有调用 onClick
- android imageButton onClick方法没有调用
- Android onClick 按钮单击事件 四种常用写法
- Android onClick按钮单击事件的四种常用写法
Android的一个OnClick方法有多个按钮?(android中onclick)
我在android中启动了程序,一次活动中有3个按钮。
我看到了一些示例代码,OnClick
它们为所有按钮(即使它们执行完全不同的操作)分配了相同的事件,并且在方法Switch(id)
情况下为案例…
有什么更好的方法?一种onClick
方法和一种或多种切换方法,每个按钮一种?
谢谢。
答案1
小编典典如果要减少编码行,请使用View''s OnClick() with switchstatement
;如果要单独处理所有单击(为便于理解和维护代码),请分别使用所有button''s onClick().
更新:
如果在“活动”布局xml文件中声明了Buttons,则应android:onClick=""
为所有按钮编写具有相同方法名称的属性,并在Activity中实现该方法。现在,您为所有按钮提供了一种方法,在该方法中,可以区分带有id的按钮。
例:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:onClick="buttonOnClick" android:layout_height="wrap_content" android:text="Hello, I am a Button 1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:onClick="buttonOnClick" android:layout_height="wrap_content" android:text="Hello, I am a Button 2" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:onClick="buttonOnClick" android:layout_height="wrap_content" android:text="Hello, I am a Button 3" /></LinearLayout>
现在在您的Activity实施中buttonOnClick
,
public void buttonOnClick(View view){ switch(view.getId()) { case R.id.button1: // Code for button 1 click break; case R.id.button2: // Code for button 2 click break; case R.id.button3: // Code for button 3 click break; }}
或者,您可以对活动中动态添加的按钮应用相同的开关盒,例如,而不是buttonOnClick
必须使用
实现的View的OnClickListerner onClick
。
Android ClickableSpan 没有调用 onClick
我正在创建一个 ClickableSpan,它正确显示并带有下划线的正确文本。但是,点击未注册。你知道我做错了吗???
谢谢,
这是代码片段:
view.setText("This is a test");ClickableSpan span = new ClickableSpan() { @Override public void onClick(View widget) { log("Clicked"); }};view.getText().setSpan(span, 0, view.getText().length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
答案1
小编典典您是否尝试过在包含跨度的 TextView 上设置 MovementMethod?你需要这样做才能使点击工作......
tv.setMovementMethod(LinkMovementMethod.getInstance());
android imageButton onClick方法没有调用
编辑:发布完整的代码(除了XML,因为它是一堆荒谬的表格格式!)
请忽略与我的问题无关的代码!我现在正在提供功能.我稍后会清理它.
大家好!第一个应用和第一个问题.我在这里研究了一段时间,通常会找到我的答案,但我有一个可能非常明显的bugger.我有一个imageButton似乎没有调用指定的方法.
我的imageButton的XML:
<ImageButton
android:background="@null"
android:onClick="click"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton1"
android:src="@drawable/stats"
android:layout_gravity="center_vertical">
</ImageButton>
我的代码:
package com.talismancs;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class sheet extends Activity{
private String selection;
private String pick;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sheet);
Bundle extras = getIntent().getExtras();
if(extras !=null) {
// Get extra from .main and remove spaces
String pick = extras.getString(selection);
pick = pick.replace(" ", "");
//Convert extra from string to int as ID and make image
int imageResource = getResources().getIdentifier(pick, "drawable", getPackageName());
ImageView iv = (ImageView) findViewById(R.id.imageView1);
final Drawable image = getResources().getDrawable(imageResource);
iv.setimageDrawable(image);
// Populate tv's from string
TextView tv1 = (TextView) findViewById(R.id.textView4);
TextView tv2 = (TextView) findViewById(R.id.textView5);
TextView tv3 = (TextView) findViewById(R.id.textView6);
TextView tv4 = (TextView) findViewById(R.id.textView7);
TextView tv5 = (TextView) findViewById(R.id.textView8);
int arrayresource = getResources().getIdentifier(pick, "array", getPackageName());
String[] CharString = getResources().getStringArray(arrayresource);
tv1.setText(CharString[0]);
tv2.setText(CharString[1]);
tv3.setText(CharString[2]);
tv4.setText(CharString[3]);
tv5.setText(CharString[4]);
}
}
public void onClick(View view) {
Intent i = new Intent(sheet.this, stats.class);
i.putExtra(pick, pick);
startActivity(i);
}
}
好像很简单吧?当我点击imageButton时,它什么都没做!
请帮忙.
编辑:LOGCAT选择一个微调器项目后,我们可以访问此活动.sheet
> 03-16 06:15:38.977:
> INFO/ActivityManager(563): displayed
> activity com.talismancs/.sheet: 766 ms
> 03-16 06:15:42.907:
> DEBUG/dalvikvm(1735): GC freed 448
> objects / 39160 bytes in 58ms 03-16
> 06:15:43.847:
> INFO/NotificationService(563):
> enqueuetoast pkg=com.talismancs
> callback=android.app.ITransientNotification$Stub$Proxy@43773720
> duration=1 03-16 06:15:43.877:
> INFO/ActivityManager(563): Starting
> activity: Intent {
> comp={com.talismancs/com.talismancs.sheet} (has extras) } 03-16 06:15:43.917:
> WARN/InputManagerService(563): Window
> already focused, ignoring focus gain
> of:
> com.android.internal.view.IInputMethodClient$Stub$Proxy@43718320
> 03-16 06:15:44.527:
> INFO/ActivityManager(563): displayed
> activity com.talismancs/.sheet: 646 ms
之后,当我点击imageButton时什么也没做
解决方法:
你的代码错了.你没有使用ClickListener分配你的按钮.
请参阅此示例代码以了解如何实现它.
public class ExampleActivity extends Activity implements OnClickListener {
protected void onCreate(Bundle savedValues) {
...
Button button = (Button)findViewById(R.id.corky);
button.setonClickListener(this);
}
// Implement the OnClickListener callback
public void onClick(View v) {
// do something when the button is clicked
}
...
}
您可以访问此link以获取更多参考.
Android onClick 按钮单击事件 四种常用写法
XML文件
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone"
android:ems="10"
android:id="@+id/et_number"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dial_number"
android:id="@+id/bt_dial"
android:layout_below="@id/et_number"
android:layout_alignRight="@id/et_number"
android:layout_alignEnd="@id/et_number" />
第一种、匿名内部类:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bt_dial = (Button) findViewById(R.id.bt_dial);
bt_dial.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialPhone();
}
});
}
第二种、自定义单击事件监听类:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number = (EditText) MainActivity.this.findViewById(R.id.et_number);
Button bt_dial = (Button) findViewById(R.id.bt_dial);
bt_dial.setOnClickListener(new MyListener());
}
private class MyListener implements View.OnClickListener {
@Override
public void onClick(View view) {
dialPhone();
}
}
第三种、Activity继承View.OnClickListener,由Activity实现OnClick(View view)方法,在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理:
public class MainActivity extends Activity implements View.OnClickListener {
EditText et_number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_number = (EditText) MainActivity.this.findViewById(R.id.et_number);
Button bt_dial = (Button) findViewById(R.id.bt_dial);
bt_dial.setOnClickListener(this);
}
public void onClick(View view) {
switch (view.getId()){
case R.id.bt_dial:
dialPhone();
break;
default:
break;
}
}
}
第四种、在XML文件中显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法:
<Button
android:onClick="dialPhoneMethod"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dial_number"
android:id="@+id/bt_dial"
android:layout_below="@id/et_number"
android:layout_alignRight="@id/et_number"
android:layout_alignEnd="@id/et_number" />
public void dialPhoneMethod(View view){
dialPhone();
}
private void dialPhone() {
String number = et_number.getText().toString().trim();
if (TextUtils.isEmpty(number)){
Toast.makeText(this, "电话号码不能为空", Toast.LENGTH_LONG).show();
return;
}
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + number));
startActivity(intent);
}
Android onClick按钮单击事件的四种常用写法
这里使用四种onClick单击事件,来实现电话拔号器的DEMO。
XML文件
<EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" android:ems="10" android:id="@+id/et_number" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dial_number" android:id="@+id/bt_dial" android:layout_below="@id/et_number" android:layout_alignRight="@id/et_number" android:layout_alignEnd="@id/et_number" />
第一种、匿名内部类:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt_dial = (Button) findViewById(R.id.bt_dial); bt_dial.setonClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialPhone(); } }); }
第二种、自定义单击事件监听类:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_number = (EditText) MainActivity.this.findViewById(R.id.et_number); Button bt_dial = (Button) findViewById(R.id.bt_dial); bt_dial.setonClickListener(new MyListener()); } private class MyListener implements View.OnClickListener { @Override public void onClick(View view) { dialPhone(); } }
第三种、Activity继承View.OnClickListener,由Activity实现OnClick(View view)方法,在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理:
public class MainActivity extends Activity implements View.OnClickListener { EditText et_number; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_number = (EditText) MainActivity.this.findViewById(R.id.et_number); Button bt_dial = (Button) findViewById(R.id.bt_dial); bt_dial.setonClickListener(this); } public void onClick(View view) { switch (view.getId()){ case R.id.bt_dial: dialPhone(); break; default: break; } } }
第四种、在XML文件中显示指定按钮的onClick属性,这样点击按钮时会利用反射的方式调用对应Activity中的click()方法:
<Button android:onClick="dialphonemethod" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/dial_number" android:id="@+id/bt_dial" android:layout_below="@id/et_number" android:layout_alignRight="@id/et_number" android:layout_alignEnd="@id/et_number" /> public void dialphonemethod(View view){ dialPhone(); } private void dialPhone() { String number = et_number.getText().toString().trim(); if (TextUtils.isEmpty(number)){ Toast.makeText(this,"电话号码不能为空",Toast.LENGTH_LONG).show(); return; } Intent intent = new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:" + number)); startActivity(intent); }
总结:
第四种写法整个代码中都不用声明button就可以实现button的单击事件。但通常不推荐这样使用,第三种方法是onClick最佳的的使用方式。按钮少的时候用匿名内部类会比较快,比如写demo测试的时候。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧!
今天关于Android的一个OnClick方法有多个按钮?和android中onclick的分享就到这里,希望大家有所收获,若想了解更多关于Android ClickableSpan 没有调用 onClick、android imageButton onClick方法没有调用、Android onClick 按钮单击事件 四种常用写法、Android onClick按钮单击事件的四种常用写法等相关知识,可以在本站进行查询。
本文标签: