java - 在父级或祖先上下文中找不到 Onclick 方法

标签 java android buttonclick android-appcompat

我收到一个非常简单的错误。我创建了一个测试按钮和一个 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/

相关文章:

java - 相同输入不同输出..时间计算

android - 如何解决创建签名 APK 文件时遇到的问题?

android - 打开应用后,ANDROID应用会停止崩溃,以提供消息 “HAS STOPPED WORKING”

android - 使用 LocationClient 定期获取位置的最佳方法?

java - 调用setEnabled(false)后按钮仍然可以再按一次

java - 更改按钮单击 ANDROID 上的默认启动器

java - JAXB 将 boolean 值编码为复杂类型

java - 在不同的窗口中查看

java - 如果我使用 Scala + MongoDB,我需要什么网页

android - 单击按钮时更改 fragment