所以我目前正在创建一个应用程序,其中一个困扰我的小事是我必须单击一个按钮两次才能工作。
这是我的代码,我看不出有什么问题:
public void signUpButtonClickAction(View v){
Button signUpButtonClick = (Button) findViewById(R.id.signUpButton);
signUpButtonClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, Signup.class));
}
});
}
我的按钮的xml代码:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/signUps"
android:id="@+id/signUpButton"
android:layout_marginBottom="38dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:onClick="signUpButtonClickAction"/>
这可能是一个小修复,但即使我无法发现这个错误
编辑:很抱歉,但为什么我的问题是&#34;被拒绝投票&#34;?这是一个真正的问题,对于刚接触Android开发的人来说很容易让人感到困惑或难以理解......
答案 0 :(得分:2)
<强>解决方案强>
删除行android:onClick="signUpButtonClickAction"
并添加
Button signUpButtonClick = (Button) findViewById(R.id.signUpButton);
signUpButtonClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, Signup.class));
}
});
到您的活动的onCreate
方法或您片段的onCreateView
方法。
替代解决方案
或者,将代码更改为此
public void signUpButtonClickAction(View v) {
startActivity(new Intent(MainActivity.this, Signup.class));
}
<强>解释强>
xml中的行android:onClick="signUpButtonClickAction"
导致对signUpButtonClick.setOnClickListener()的内部调用,因此您不必再次在signUpButtonClickAction
中设置onClickListener。
初始化多个按钮
private void initializeButtons() {
Button signUpButtonClick = (Button) findViewById(R.id.signUpButton);
signUpButtonClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, Signup.class));
}
});
Button anotherButton = (Button) findViewById(R.id.anotherButton);
anotherButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("TAG", "Clicked on another button!");
}
});
}
现在只需从您活动的initializeButtons()
方法中调用onCreate
即可。
答案 1 :(得分:1)
问题是你要设置两次onClick动作。在您的xml代码中,您只需将onClick()设置为按钮,就不需要在subdir = os.path.replace(root, '') # I'm not too sure what is a better way to replace paths..
中设置setOnClickListener()。您有两种选择:
保持xml文件不变,并在signUpButtonClickAction(View v)
内执行:
signUpButtonClickAction(View v)
或强>
删除xml文件的onClick:
public void signUpButtonClickAction(View v){
startActivity(new Intent(MainActivity.this, Signup.class));
}
在您的活动中执行此操作:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/signUps"
android:id="@+id/signUpButton"
android:layout_marginBottom="38dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
/>
答案 2 :(得分:0)
问题的原因是:onclick()
和onClickListener
字面意思相同!你正在实现这两个,最终结果是你需要按两次按钮才能启动活动!
<强> FIX:强>
您的问题的解决方案是:
<强> 1 强>
public void signUpButtonClickAction(View v)
{
startActivity(new Intent(MainActivity.this, Signup.class));
}
<强> 2 强>
Button signUpButtonClick = (Button) findViewById(R.id.signUpButton);
signUpButtonClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, Signup.class));
}
});
答案 3 :(得分:0)