我收到一个非常简单的错误。我创建了一个测试按钮和一个 onClick 方法来更改布局。我以简单的方式做到了,以便您可以更好地理解我的问题。
这是我的按钮方法:
public void accountButton (View v){
setContentView(R.layout.activity_start);
}
这是我的按钮的 xml 文件:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test"
android:id="@+id/button"
android:layout_below="@+id/welcomeTxt"
android:layout_centerHorizontal="true"
android:layout_marginTop="149dp"
android:onClick="accountButton"
android:nestedScrollingEnabled="true" />
单击按钮时出现以下错误:
java.lang.IllegalStateException: Could not find method accountButton(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'button'
最佳答案
您可能正在从另一个 Activity 调用您的 setContentView
方法。此方法会膨胀布局。
如果在布局所属的 Activity 外部调用它,则将找不到该按钮。从另一个 Activity 初始化一个 Activity 的最常见方法是按 Intent 。
Intent intent = new Intent(this, StartActivity.class);
startActivity(intent);
然后,在您的 Activity 中调用 setContentView(R.layout.your_activity_layout)
来扩充布局。如果这样做,您可以正常从 Activity 内部调用 xml 文件中引用的 onClick(View view)
。
关于java - 在父级或祖先上下文中找不到 Onclick 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39140651/