我创建了一个简单的活动,该活动旨在将两条信息发送到另一个活动。但是,我的按钮没有注册任何点击事件。有谁知道为什么会这样吗?我希望通过将onClick =“ onClickWrite”添加到XML文件来链接它们,但是单击时没有响应。如果有人可以帮助我,我将不胜感激。我尝试实现onClickListener,但是通过该实现,它在Toasts上引发了错误。
活动
public class InitializeClass extends Activity {
private Service service;
private Button button;
EditText infoOne;
EditText infoTwo;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.button_control);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(clicked);
infoOne= (EditText) findViewById(R.id.editText);
infoTwo= (EditText) findViewById(R.id.editText1);
}
private View.OnClickListener clicked = new View.OnClickListener(){
@Override
public void onClick(View view) {
if (service != null) {
int size = 100;
byte[] byteArray = new byte[size];
byte[] byteArrayTwo = new byte[size];
byteArray = infoOne.getText().toString().getBytes(Charset.defaultCharset());
byteArrayTwo= infoTwo.getText().toString().getBytes(Charset.defaultCharset());
if ((!(infoOne.getText().toString().isEmpty())) && (!(infoTwo.getText().toString().isEmpty()))) {
service.setInfo(byteArray);
service.setInfoTwo(byteArrayTwo);
intentMethod();
}
}
}
};
public void intentMethod() {
Intent intent = new Intent(this, DeviceScanActivity.class);
startActivity(intent);
}
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".InitializeClass">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="@string/send_info"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textColor="@color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText1" />
<EditText
android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="150dp"
android:ems="10"
android:inputType="textPersonName"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textColorHint="@android:color/white"
android:textCursorDrawable="@drawable/color_cursor"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:ems="10"
android:hint="info"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textColorHint="@android:color/white"
android:textCursorDrawable="@drawable/color_cursor"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
</android.support.constraint.ConstraintLayout>
答案 0 :(得分:3)
您需要先初始化按钮。
Button button = (Button) findViewById(R.id.button);
希望这会有所帮助!
答案 1 :(得分:1)
在活动类中,将按钮分配给xml中的按钮ID:
TEST_20180805202020
然后您将创建一个OnClickListener:
TEST_20180805201530
在同一活动类的onCreate方法中,您将实例化按钮并将按钮分配给onClickListener:
private Button btn = findViewById(R.id.button);
答案 2 :(得分:1)
您需要为此做几件事。
创建字段。
私人按钮按钮;
初始化按钮。
按钮button =(按钮)findViewById(R.id.button);
在按钮上设置监听器。
button.setOnClickListener();
答案 3 :(得分:0)
我找到了答案。从未初始化 if(service!= null)中的服务。我这是愚蠢的错误。谢谢大家的帮助,并以一种实现onClickListener的方式指导我!
答案 4 :(得分:0)
您需要使用Java代码强制转换按钮(名称)。 例如在xml上,您具有id / button(名称) 在您的Java文件上声明它,然后进行转换。 并且onClickListener将如下所示:
按下按钮:按钮按钮;
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});