我有两个按钮,是和否。当我单击是按钮时,它工作正常并加载下一个活动。但是,当我按下它没有错误。我已经将no按钮上的XML onclick
切换为yes方法,它工作正常,因此不能使用XML,是吗?
在我的FlowIntent.java中:
class FlowIntent {
public Intent Yes;
public Intent No;
}
在我的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:致命异常:主要 过程:capri.capritestapplication,PID:2384 java.lang.IllegalStateException:无法在父级或祖先语句中找到方法loadQuestionNo(View)用于android:onClick属性在视图类android.support.v7.widget.AppCompatButton上定义的id为'button' 在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) 在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.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(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:865) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
答案 0 :(得分:2)
<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"
。您的Button ID对于每个视图都必须是唯一的
作为您的更新问题,我建议您更改从XML调用的方法的名称。在xml和活动中更改方法名称。
如果您使用xml显示完整代码,这将有助于我们建议您进行编辑,那会更好。
答案 1 :(得分:0)
相反,在XML布局中使用android:onClick
可以通过findViewById()
查看每个按钮,并设置每个按钮的onClickListner
,并从代码而不是XML本身执行此操作。