【发布时间】:2017-06-02 11:51:48
【问题描述】:
我正在尝试创建按钮,这些按钮将基于简单的单击和长按来执行某些不同的指令,但我对如何将所有内容组合在一起的理解不足。为每个按钮执行定义的方法是可以的,但我认为使用 onClickListeners 会更好,不是吗?
所以我的代码如下。如您所见,我试图为每个按钮捕获两种类型的事件,但是当我按下按钮 1A 时,我得到了 2A 的祝酒词,当我单击按钮 2A 时,我得到一个错误并且应用程序崩溃。 要修复的第二件事是将 onClick 和 onLongClick 绑定在一起。
activity_scout.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.android.scout.ScoutActivity">
<LinearLayout
android:id="@+id/activity_scout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="8dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:paddingTop="8dp"
android:orientation="vertical" >
<Button
android:id="@+id/but1A"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1a"
android:onClick="click1a"
/>
<Button
android:id="@+id/but2A"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2a"
android:onClick="click2a" />
</LinearLayout>
</ScrollView>
ScoutActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import static com.example.android.basketscout.R.id.butPlayer1A;
import static com.example.android.basketscout.R.id.butPlayer2A;
import static com.example.android.basketscout.R.id.butPlayer3A;
import static com.example.android.basketscout.R.id.butPlayer4A;
import static com.example.android.basketscout.R.id.butPlayer5A;
import static com.example.android.basketscout.R.id.textView;
public class ScoutActivity extends AppCompatActivity {
Button but1A;
Button but2A;
Button but3A;
Button but4A;
Button but5A;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scout);
but1A = (Button) findViewById(R.id.but1A);
but2A = (Button) findViewById(R.id.but1A);
but1A.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
Toast.makeText(getApplicationContext(), "Button 1A clicked", Toast.LENGTH_SHORT).show();
}
});
but2A.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
Toast.makeText(getApplicationContext(), "Button 2A clicked", Toast.LENGTH_SHORT).show();
}
});
but1A.setOnLongClickListener(new View.OnLongClickListener(){
public void onLongClick (View view) {
Toast.makeText(getApplicationContext(),"Button 1A long clicked", Toast.LENGTH_SHORT).show();
}
});
but2A.setOnLongClickListener(new View.OnLongClickListener(){
public void onLongClick (View view) {
Toast.makeText(getApplicationContext(),"Button 2A long clicked", Toast.LENGTH_SHORT).show();
}
});
}
}
[如果您看到任何错误,例如未闭合的括号或不完全正确的变量名称,那是因为我从复制/粘贴中进行了一些编辑]
【问题讨论】:
-
删除
android:onClick="click1a"和android:onClick="click2a"。这是多余的。 -
错误日志??...
-
@alphaQ,为什么这是多余的?它们不是两个不同的按钮吗?
标签: android onclick onclicklistener onlongclicklistener