我有两个按钮,yes和no。当我单击yes按钮时,它工作正常,并加载下一个活动。然而,当我按下"否"时,它会出错。我已经将"否"按钮上的XML onclick
切换为"是"方法,它运行良好,所以它不能显示XML,是吗?
在我的FlowIntent.java中:
class FlowIntent {
public Intent Yes;
public Intent No;
}
Inside my MainActivity.java:
package capri.capritestapplication;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private FlowIntent Flow = new FlowIntent();
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// should be dynamic
this.Flow.No = new Intent(this, MainActivity2.class);
this.Flow.Yes = new Intent(this, MainActivity2.class);
}
public void loadQuestionNo(View view) {
startActivity(this.Flow.No);
}
public void loadYes(View view) {
startActivity(this.Flow.Yes);
}
}
在我的MainActivity2.java和MainActivity3(适用于2(内部:
package capri.capritestapplication;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private FlowIntent Flow = new FlowIntent();
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
}
public void loadQuestionNo(View view) {
// todo
}
public void loadYes(View view) {
// todo
}
}
在我的XML:中
<Button
android:text="No"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="34dp"
android:layout_marginStart="34dp"
android:id="@+id/button2"
android:elevation="3dp"
android:onClick="loadYes" />
<Button
android:text="No"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="34dp"
android:layout_marginStart="34dp"
android:id="@+id/button"
android:elevation="3dp"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:layout_toEndOf="@+id/button2"
android:onClick="loadQuestionNo" />
我的错误日志是:
E/AndroidRuntime:致命异常:main进程:capri.capritestapplication,PID:2384java.lang.IollegalStateException:在android的父或祖先上下文中找不到方法loadQuestionNo(View(:在视图类android.support.v7.widget.AppCompatButton上定义的onClick属性,id为"button"在android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewExplater.java:327(在android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewExplater.java:284(在android.view.view.performClick(view.java:5610(在android.view.view$PerformClick.run(view.java:22260(在android.os.Handler.handleCallback(Handler.java:751(在android.os.Handler.dispatchMessage(Handler.java:95(在android.os.Looper.loop(Looper.java:154(在android.app.ActivityThread.main(ActivityThreads.java:6077(位于java.lang.reflect.Method.ioke(本机方法(网址:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865(网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:755(
<Button
android:text="No"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="34dp"
android:layout_marginStart="34dp"
android:id="@+id/button"
android:elevation="3dp"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:layout_toEndOf="@+id/button2"
android:onClick="loadYes" />
<Button
android:text="No"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="34dp"
android:layout_marginStart="34dp"
android:id="@+id/button"
android:elevation="3dp"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:layout_toEndOf="@+id/button2"
android:onClick="loadQuestionNo" />
查看您的XML代码。两个按钮具有相同的id android:id="@+id/button"
。对于每个视图,您的按钮id必须是唯一的
作为您最新的问题,我建议您更改从XML调用的方法的名称。在xml和活动中更改方法名称。
如果您使用xml显示完整的代码,这将有助于我们建议您进行编辑。
不要在XML布局中使用android:onClick
,而是通过findViewById()
获取视图,并设置每个按钮的onClickListner
,然后从代码而不是XML本身执行。