Java 在父或父上下文中找不到Onclick方法
我得到一个非常简单的错误。我创建了一个测试按钮和一个onClick方法来更改布局。我用一种简单的方法来做,这样你就能更好地理解我的问题 这是我的按钮方法:Java 在父或父上下文中找不到Onclick方法,java,android,buttonclick,android-appcompat,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_he
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:找不到方法
的父或祖先上下文中的accountButton(视图)
在视图类上定义的android:onClick属性
id为“button”的android.support.v7.widget.AppCompatButton
您不应该调用
setContentView(R.layout.activity\u start)代码>内部onClick()
按钮的mentod。您必须调用setContentView(R.layout.activity\u start);内部oncreate()
方法
按照步骤来实现它
在类中实现OnClickListener
初始化onCreate()中的按钮
为按钮设置setOnClickListener()
方法
btn.setOnClickListener()
然后在oncreate()之外调用该方法
您不应该调用setContentView(R.layout.activity\u start)代码>内部onClick()
按钮的mentod。您必须调用setContentView(R.layout.activity\u start);内部oncreate()
方法
按照步骤来实现它
在类中实现OnClickListener
初始化onCreate()中的按钮
为按钮设置setOnClickListener()
方法
btn.setOnClickListener()
然后在oncreate()之外调用该方法
对于那些仍然存在问题的人,在Android Studio或Intellij IDE中,这可能是您正在使用的类(或其前身)的缓存版本,该版本不会被重新编译
执行“使缓存无效/重新启动”操作,您的问题很可能会消失
当我反复出现这个问题时,我注意到这是由于Google Drive触发的“文件锁”,它正在复制我的文件。临时禁用解决了我的所有问题。对于那些仍然存在问题的人,在Android Studio或Intellij IDE中,这可能是您正在使用的类(或其前身)的缓存版本,不会重新编译
执行“使缓存无效/重新启动”操作,您的问题很可能会消失
当我反复出现这个问题时,我注意到这是由于Google Drive触发的“文件锁”,它正在复制我的文件。临时禁用解决了我的所有问题。您可能正在从其他活动调用您的setContentView
方法。此方法会使布局膨胀
如果在布局所属的活动之外调用,则找不到该按钮。从另一个活动初始化活动最常见的方法是通过意图
Intent intent = new Intent(this, StartActivity.class);
startActivity(intent);
然后,在活动内部调用setContentView(R.layout.your\u activity\u layout)
以扩大布局。如果执行此操作,您通常可以从活动内部调用xml文件中引用的onClick(View View)
。您可能正在从另一个活动调用setContentView
方法。此方法会使布局膨胀
如果在布局所属的活动之外调用,则找不到该按钮。从另一个活动初始化活动最常见的方法是通过意图
Intent intent = new Intent(this, StartActivity.class);
startActivity(intent);
然后,在活动内部调用setContentView(R.layout.your\u activity\u layout)
以扩大布局。如果您这样做,您可以正常地从活动内部调用xml文件中引用的onClick(查看视图)
。也发布活动代码。也发布活动代码。我只需要第一句话。应该可以在类似问题的其他版本中找到,我只需要这句话的第一句。应在类似问题的其他版本上提供