按钮仅在第二次单击时起作用
Button working only on second click
我有一个简单但烦人的问题:
在我的片段中,我有一个按钮,点击它应该会打开另一个 activity(意图)。但是,我必须单击该按钮两次,只有第二次它才打开 activity。
这是按钮的 xml 布局:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go!"
android:onClick="login"
android:id="@+id/bt_SignIn"
android:layout_below="@+id/pass"
android:layout_centerHorizontal="true"
android:layout_marginTop="70dp" />
这里是 onClick 的代码:
public void login(View view){
bt_SignIn = (Button) findViewById(R.id.bt_SignIn);
bt_SignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
}
}
你应该避免在 XML 中直接使用 onClick
,这是一个 bad idea。
从 XML 中删除 onClick
:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go!"
android:id="@+id/bt_SignIn"
android:layout_below="@+id/pass"
android:layout_centerHorizontal="true"
android:layout_marginTop="70dp" />
将此代码放入您的 Activity
:
的 onCreate
bt_SignIn = (Button) findViewById(R.id.bt_SignIn);
bt_SignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
}
为什么要再次为 btn_signIn 定义 Onclick 侦听器?正如您已经在 xml 中定义的那样,登录方法将在单击按钮时调用。
仅使用以下代码。
public void login(View view) {
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
这是因为在 xml 中定义的函数中,您正在为按钮设置侦听器。从 JAVA 代码或 xml 代码执行此操作。
这就够了
public void login(View view) {
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
之前发生的事情是,在第一次点击时,xml 中定义的函数被调用,这反过来又为按钮设置了监听器,所以在下一次点击你的 activity被触发
您为按钮设置了两次 onClick 侦听器。您在 XML 中声明了 onClick,这样您的方法就可以了。
public void login(View view){
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
改变你的login(View view)
方法如下
public void login(View view){
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
或者最好将代码放在 onCreate()
方法中
bt_SignIn = (Button) findViewById(R.id.bt_SignIn);
bt_SignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
}
并从布局中删除 onClick
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go!"
android:id="@+id/bt_SignIn"
android:layout_below="@+id/pass"
android:layout_centerHorizontal="true"
android:layout_marginTop="70dp" />
我有一个简单但烦人的问题:
在我的片段中,我有一个按钮,点击它应该会打开另一个 activity(意图)。但是,我必须单击该按钮两次,只有第二次它才打开 activity。 这是按钮的 xml 布局:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go!"
android:onClick="login"
android:id="@+id/bt_SignIn"
android:layout_below="@+id/pass"
android:layout_centerHorizontal="true"
android:layout_marginTop="70dp" />
这里是 onClick 的代码:
public void login(View view){
bt_SignIn = (Button) findViewById(R.id.bt_SignIn);
bt_SignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
}
}
你应该避免在 XML 中直接使用 onClick
,这是一个 bad idea。
从 XML 中删除 onClick
:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go!"
android:id="@+id/bt_SignIn"
android:layout_below="@+id/pass"
android:layout_centerHorizontal="true"
android:layout_marginTop="70dp" />
将此代码放入您的 Activity
:
onCreate
bt_SignIn = (Button) findViewById(R.id.bt_SignIn);
bt_SignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
}
为什么要再次为 btn_signIn 定义 Onclick 侦听器?正如您已经在 xml 中定义的那样,登录方法将在单击按钮时调用。
仅使用以下代码。
public void login(View view) {
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
这是因为在 xml 中定义的函数中,您正在为按钮设置侦听器。从 JAVA 代码或 xml 代码执行此操作。
这就够了
public void login(View view) {
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
之前发生的事情是,在第一次点击时,xml 中定义的函数被调用,这反过来又为按钮设置了监听器,所以在下一次点击你的 activity被触发
您为按钮设置了两次 onClick 侦听器。您在 XML 中声明了 onClick,这样您的方法就可以了。
public void login(View view){
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
改变你的login(View view)
方法如下
public void login(View view){
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
或者最好将代码放在 onCreate()
方法中
bt_SignIn = (Button) findViewById(R.id.bt_SignIn);
bt_SignIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(getApplicationContext(), Frontpage.class);
startActivity(i);
}
}
并从布局中删除 onClick
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go!"
android:id="@+id/bt_SignIn"
android:layout_below="@+id/pass"
android:layout_centerHorizontal="true"
android:layout_marginTop="70dp" />